Redis 事务
redis事务就是一个命令执行的队列,将一系列预定义的命令包装成一个整体。当执行时,一次性按照添加顺序依次执行,中间不会被打断或者干扰。
事务的基本操作
- 开启事务 multi 设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中
- 执行事务 exec 设定事务的结束位置,同时执行事务。与multi成对出现,成对使用
- 取消事务 discard 终止当前事务的定义
- 注意 加入事务的命令暂时加入到任务队列中,并没有立即执行,只有执行exec命令才开始执行
事务的注意事项
锁
-
watch 监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行。监控一直持续到EXEC命令(事务中的命令是在EXEC之后才执行的,所以在MULTI命令后可以修改WATCH监控的键值)
-
unwatch 取消对所有key的监视
-
setnx lock-key value 设置一个公共锁,设置时有值就返回失败,无值返回设置成功
- 对于设置成功的,拥有控制权,进行下一步具体业务操作
- 对于返回失败的,不具有控制权,排队或者等待
-
使用expire为锁添加时间限定,到时不释放,放弃锁
- expire lock-key second
- pexpire lock-key milliseconds