Redis 事务与锁
基本操作
事务的基本操作
# 开启事务,设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中
multi
# 取消事务,终止当前事务的定义,发生在 multi 之后,exec 之前
discard
# 执行事务,设定事务的结束位置,同时执行事务。与 multi 成对出现,成对使用
exec
加入事务的命令暂时进入到任务队列中,并没有立即执行,只有执行 exec 命令才开始执行。
若加入事务的命令有语法错误,那么队列中所有的命令都不会执行。
若加入事务的命令格式正确,但无法正确的执行。那么能够正确运行的命令会执行,运行错误的命令不会被执行。
已经执行完毕的命令对应的数据不会自动回滚,需要程序员自己在代码中实现回滚。
事务工作流程
使用队列实现
锁
# 对 key 添加监视锁(必须在事务之前),在执行 exec 前如果 key 发生了变化,终止事务执行
watch key1 key2
# 取消对所有 key 的监视,执行 exec 后会自动取消
unwatch