redis 分布式缓存实战分布式缓存实战-redis 事务事务
编辑推荐编辑推荐:
本文介绍了 redis 事务的概念描述、命令和示例,希望对您的学习有所帮助。
本文来自博客园,由火龙果软件Linda编辑、推荐。
1.描述
redis 事务单独的隔离操作:事务中的所有命令都会序列化、按顺序执行。事务在执行过程中,不会被其他客户端发送
过来的命令请求所打断。
redis 事务没有隔离级别的概念:队列中的命令没有提交之前都不会实际的被执行,因为事务提交前任何指令都不会被实
际执行,也就不存在“事务内的查询看到事务里的更新,在事务外查询不能看到”。
redis 事务不保证原子性:redis 同一个事务中如果有一条命令运行时执行失败,其后的命令仍然会被执行,没有回滚。
2.命令
Multi、Exec、Discard和Watch是Redis事务的相关命令。
Multi:标记一个事务块的开始。Multi 命令用于开启一个事务,它总是返回 OK 。 Multi 执行之后, 客户端可以继续向服
务器发送任意多条命令, 这些命令不会立即被执行, 而是被放到一个队列中, 当 Exec命令被调用时, 所有队列中的命令才
会被执行。另一方面, 通过调用 Discard, 客户端可以清空事务队列, 并放弃执行事务。
Exec:执行所有事务块内的命令。命令的回复是一个数组, 数组中的每个元素都是执行事务中的命令所产生的回复。 其
中, 回复元素的先后顺序和命令发送的先后顺序一致。当客户端处于事务状态时, 所有传入的命令都会返回一个内容为
Queued 的状态回复(status reply), 这些被入队的命令将在 Exec 命令被调用时执行。
Discard:取消事务,放弃执行事务块内的所有命令。当执行Discard命令时,事务会被放弃,事务队列会被清空,并且客
户端会从事务状态中退出。
Watch:监视一个或多少Key,如果在事务执行之前这个或这些Key被其他命令所改动,那么事务将被打断。
UnWatch:取消Watch命令对所有Key的监视。
3.示例
3.1. 正常执行示例
首先我们清空数据库内容,查看内容能看到数据库为空。然后Multi 开启一事务,设置两个 Key、Value值,Exec 执行事
务。我们看到执行事务时,同时返回两命令的执行结果。通过查询数据库正常保存两数据内容。