跳至主要內容

Redis的事务和锁

pptg小于 1 分钟

注意

Redis单条命令保证原子性

Redis事务不保证原子性

1. Redis事务

Redis事务中所有命令都会被序列化,在执行过程中会按照顺序执行,具有以下性质:

  • 一次性
  • 顺序性
  • 排他性

Redis事务没有隔离级别的概念,命令在事务中并没有执行,而是发起执行命令Exec的时候才执行

# 1. 开启事务
mutlti
# 2. 其他命令
...
# 3. 执行
exec
# 4. 取消
discard

如果命令发送了编译型异常,则所有命令都不会执行;如果是运行时异常,那么其他命令会执行,错误命令抛出异常

2. 锁

使用watch充当乐观锁

# 1. 监视
watch key
# 2. 开启事务
mutlti
# 3. 其他命令
...
# 4. 执行
exec
# 5. 取消
discard
# 6. 取消监视
unwatch key