4.Redis事务

Redis事务

严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的。

Redis 通过 MULTI、EXEC、WATCH 等命令来实现事务(transaction)功能。

事务提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。Redis保证一个事务中的所有命令要么都执行,要么都不执行,但是Redis同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,不会回滚。

Redis事务命令实例

WATCH命令可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行。监控一直持续到EXEC命令(事务中的命令是在EXEC之后才执行的,所以在MULTI命令后可以修改WATCH监控的键值)

下图是WATCH命令示例:

WATCH示例

由于WATCH命令的作用只是当被监控的键值被修改后阻止之后一个事务的执行,而不能保证其他客户端不修改这一键值,所以在一般情况下我们需要在EXEC执行失败后重新执行整个函数。

参考文档:Redis事务及WATCH

你可能感兴趣的:(4.Redis事务)