Redis 事务本质:一组命令的集合! 一个事务中的所有命令都会被序列化,在事务执行过程的中,会按 照顺序执行!事务中的多个命令被一次性发送给服务器
Redis事务没有没有隔离级别的概念!事物中的命令没有被执行,只有发起的时候才会被执行,
Redis 最简单的事务实现方式是使用 MULTI 和 EXEC 命令将事务操作包围起来。
MULTI开启后,执行命令都会进入队列,执行EXEC,才会顺序执行指令,DISCARD可以取消事物
事物过程中执行出错的情况:
1、语法错误:整个事物无法执行失败
2、执行错误:其中可以正确执行的,执行有错的不执行
基于特定条件的事物执行-锁
对key添加监视锁,在执行exec前如果key发生变化,终止事物执行
watch key1 [key2......]
取消对所有key的监视
基于特定条件的事物执行-分布式锁
使用setnx设置一个公共锁
setnx lock-key value
使用del删除
基于特定条件的事物执行-分布式锁改良
使用expire为锁key加时间限定,到时不释放,放弃锁
expire lock-key second
pexpire lock-key milliseconds
例:expire lock-name 20