• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Redis事务(Jedis实现)、实现乐观锁

redis 海叔叔 13小时前 4次浏览 已收录 0个评论

Redis事务

Redis事务简介

Redis事务的本质是一组命令的执行,一个事务中的所有命令都会被序列化,所有命令按照入队的顺序执行,先入队的先执行;Redis事务没有隔离级别;单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。

一次性;顺序性;排他性

Redis事务执行顺序

1、开启事务(multi)
2、命令入队(多条命令)
3、执行事务(exec)

Redis事务相关命令

1、watch key1 key2 … : 监视一或多个key,如果在事务执行之前,被监视的key被其他命令改动,则事务被打断 ( 类似乐观锁 )
2、multi : 标记一个事务块的开始( queued )
3、exec : 执行所有事务块的命令 ( 一旦执行exec后,之前加的监控锁都会被取消掉 )
4、discard : 取消事务,放弃事务块中的所有命令
5、unwatch : 取消watch对所有key的监控

事务正常执行时

执行事务过程中取消事务

当执行事务时出错时
1)当exec执行事务前出错

2)当exec执行事务后出错

watch监控,实现乐观锁
1)正常情况下:

2)使用watch监控money,当事务执行过程中money发生改变,提交事务会失败,提交后自动unwatch解锁

在上面事务执行过程中(未提交),更改了money的值

watch检测到money值发生改变,因此不允许此次事务的执行,执行事务失败,当事务执行后,无论成功失败,都会自动unwatch解锁

Jedis操作事务

导入jedis、fastjson依赖


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址