事务是单个步骤中执行一组命令
事务中的所有命令作为单个隔离操作并按顺序执行。不可以在执行Redis事务的中间向另一个客户端发出的请求。
Redis事务也是原子的。原子意味着要么处理所有命令,要么都不处理。
使用事务
#启动事务:MULTI
命令列表
执行事务:EXEC
其他命令:
DISCARD:丢弃在MULTI之后发出的所有命令
WATCH(给一个键加锁,乐观锁):监视给定的键以确定事务块的执行
UNWATCH:解锁
备注:
-
开启事务时使用watch加锁
watch key — 加锁key
unwatch — 解锁被加锁的key -
如果事务执行失败,解锁在操作
-
编译错误:命令写错了,所有命令都不执行
-
运行时错误:命令不能执行,其他命令依然执行(即进了队列就会执行事务)
springboot使用的redis插件
jedis:采用直连,多个线程操作的话,不安全。可以使用jedis pool解决这个问题。
lettuce: 线程共享,2.x以后默认使用