1、Redis事务的理解
事务是指一个完整的动作,要么全部执行,要么什么也没有做。redis 事务相关的四个 redis 指令,即 multi、 exec、discard、watch。这四个指令构成了 redis 事务处理的基础。
- multi 用来组装一个事务;
- exec 用来执行一个事务;
- discard 用来取消一个事务;
- watch 用来监视一些 key,一旦这些 key 在事务执行之前被改变,则取消事务的执行。
用 multi 组装事务时,每一个命令都会进入内存中缓存起来,QUEUED 表示缓存成功,在 exec 时这些被 QUEUED 的命令都会被组装成一个事务来执行。
对于事务的执行来说,如果 redis 开启了 AOF 持久化的话,那么一旦事务被成功执行,事务中的命令就会通过 write 命令一次性写到磁盘中去,如果在向磁盘中写的过程中恰好出现断电、硬件故障等问题,那么就可能出 现只有部分命令进行了 AOF 持久化,这时 AOF 文件就会出现不完整的情况,这时可以使用 redis-check-aof 工 具来修复这一问题,这个工具会将 AOF 文件中不完整的信息移除,确保 AOF 文件完整可用。
2、Redis的注意地方
- Redis是不具有原子性的
- Redis事务是带有隔离性的。保证在执行事务的时候,不会对事务进行中断,事务可以运行直到执行完所有事务队列中的命令为止。
- Redis不支持事务回滚