重点回顾

  • 在通常情况下,程序需要执行的 Redis 命令越多,它需要进行的网络通讯次数也会越多,程序的执行速度也会变得越慢。通过使用 Redis 的流水线特性,程序可以一次把多个命令发送给 Redis 服务器,这可以将执行多个命令所需的网络通讯次数从原来的 N 次降低为 1 次,从而使得程序的执行效率得到显著的提升。

  • 通过使用 Redis 的事务特性,用户可能将多个命令打包成一个命令执行:当事务成功执行时,事务中包含的所有命令都会被执行;相反地,如果事务执行失败,那么它包含的所有命令都不会被执行。

  • Redis 事务总是具有 ACID 性质中的原子性、一致性和隔离性,至于是否具有耐久性则取决于 Redis 使用的持久化模式。

  • 流水线与事务虽然在概念上有相似之处,但它们并不相等:流水线的作用是打包发送多条命令,而事务的作用则是打包执行多条命令。

  • 为了优化事务的执行效率,很多 Redis 客户端都会把待执行的事务命令缓存在本地,然后在用户执行 EXEC 命令时,通过流水线一次把所有事务命令发送至 Redis 服务器。

  • 通过同时使用 WATCH 命令和事务,用户可以构建起一种乐观锁机制,这种机制可以确保事务只会在指定键没有发生任何变化的情况下执行。