持久性
-
如果 redis 没有使用 RDB 或 AOF,事务的持久化是不存在的
-
使用 RDB 模式,那么在一个事务执行后,而下一次的 RDB 快照还未执行前,如果发生了实例宕机,数据丢失,这种情况下,事务修改的数据也是不能保证持久化
-
AOF 模式,因为 AOF 模式的三种配置选项 no、everysec 和 always 都会存在数据丢失的情况。所以,事务的持久性属性也还是得不到保证
总结
- redis 的事务机制可以保证一致性和隔离性;但是无法保证持久性;具备了一定的原子性,但不支持回滚
WATCH、EXEC 命令实现 redis 事务
redis> WATCH “map”
OK
redis> MULTI
OK
redis> HSET map “csc” “lwl”
QUEUED
redis> HGET map “csc”
QUEUED
redis> EXEC
-
OK
-
“lwl”
复制代码
lua 实现 redis 事务
除了 MULTI、WATCH、EXEC 命令,还有其他的方式可做到 redis 原子性和隔离性吗?有的,lua 脚本;redis 内置了lua的执行环境,并自带了一些 lua 函数库。redis 执行 lua 时,会启动一个伪客户端去执行脚本里的 redis 命令
-
一致性,原子性ÿ