redis之事务管理

来源:互联网 发布:上海java招聘会 编辑:程序博客网 时间:2024/05/29 18:56

1.Redis的事务是什么

在单个操作中可以执行一个或者一组命令。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞。

特点:

(1)事务中的所有命令作为单个隔离操作并按顺序执行。不可以在执行redis的事务中间向其他客户端发起请求。

(2)不完全保证原子性,支持部分原子性,redis在同一个事务中,如果一条命令执行失败,那么其后的命令仍然会执行,却不会回滚。

2.redis事务的命令

MULTI :开启事务,一般返回ok,但是不代表一定成功,只是开启了,好使不好使还不一定。



虽然放进去值了,但是返回的不是ok,是queue队列,就是先加入队列,行就存上,不行从队列移除。所以可以做多个操作,然后放入队列中,如图。

EXEC :执行事务。如图,可以批量执行,是设置值得就返回ok,获取值得就取值。


DISCARD :放弃当前事务。


3.什么是悲观锁和乐观锁

悲观锁:顾名思义就是采用悲观的方式,我操作的时候防止万一有人来操作,感觉有点像java中的同步锁,synchronized似的,当前我操作,就把操作的对象锁起来,谁都得等我完事再说。意思就是等我把锁释放了,别人才可以拿锁再进来。

乐观锁:采用乐观的方式,就是我操作的时候不一定会有人来吧,乐观方式就是没上锁。别人也过来操作时,就会更新当前的版本号。结果我再去更新原数据时,发现已经不一样了,那么就会告诉我需要取出当前更新后最新的版本号,才会操作更新数据。

4.redis监控命令

WATCH  XXX :监控XXX(watch可以监控一个及多个键)。给XXX上锁。watch这个命令类似于乐观锁,如果监控的key已经被修改了,那么整个监控的事务队列就不会继续执行下去了。也就是watch监控的键,只要有一个发生了改变,那么使用EXEC执行命令就会报出异常,让你基于当前更新后最新的值去操作。

UNWATCH XXX:取消监控。

注意:在执行了exec和unwatch之后,之前加的watch监控锁就会被消除了。




0 0
原创粉丝点击