事务

Redis事务分为3个指令:

multi表示事务开始

exec表示事务执行。指令在exec之前不执行,统一缓存在服务器的一个事务队列中,当执行exec指令后,才开执行整个事务队列,执行完毕后一次性返回所有指令的运行结果。

discard表示丢弃事务缓存队列中的所有指令

 

由于Redis是单线程,这就意味着所有事务必须是串行执行,因此当前正在执行的事物也不会被其他事物打断,因此Redis事务没有原子性这个说法,只有隔离性,因为是串行运行,也就不存在同一条记录被多个事务修改,也就没有原子性这个说法,这里只有事务与事务之间的隔离性。

假如一个事务里面有5条指令,如果其中一条执行失败,其剩余指令还会继续执行,这里事务与事务之间隔离,事务内部指令之间也是隔离。

这里有个watch锁,研究不多,只是有个规定:watch锁禁止在multi和exec之间执行watch 指令,而必须在multi之前进行wtach关键变量。

发布了167 篇原创文章 · 获赞 10 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章