首页 > 其他 > 详细

Redis事务

时间:2020-06-24 16:51:12      阅读:61      评论:0      收藏:0      [点我收藏+]

基本语法

  • MULTI
    • 开启事务, 后续的命令会被加入到同一个事务中
    • 事务中的操作会发给服务端, 但是不会立即执行, 而是放到了该事务的对应的一个队列中, 服务端返回QUEUED
  • EXEC
    • 执行EXEC后, 事务中的命令才会被执行
    • 事务中的命令出现错误时, 不会回滚也不会停止事务, 而是继续执行
  • DISCARD
    • 取消事务, 事务队列会清空, 客户端退出事务状态
$ redis-cli
127.0.0.1:6379> set user1 zs  # 设置string类型的键 user1
OK
127.0.0.1:6379> type user1  # 查看user1类型
string
127.0.0.1:6379> multi  # 开启事务
OK
127.0.0.1:6379> set age 20  # 设置string类型的键 age, 事务中的操作不会立即执行, 只是入列
QUEUED
127.0.0.1:6379> hset user1 name zs  # 设置hash类型的键 user1, 由于user1已存在, 且为string类型, 所以在该命令真正执行时会报错, 此处仅为入列
QUEUED
127.0.0.1:6379> set height 1.8  # 设置string类型的键 height
OK
127.0.0.1:6379> exec  # 提交事务, 即使部分操作失败, 不回滚且继续执行
1) OK
2) (error) WRONGTYPE Operation against a key holding the wrong kind of value
3) OK

不要误导老子,这就不是事务,只是把代码堆在一起,一起执行罢了

代码示例

from redis import StrictRedis

# 创建redis客户端
redis_client = StrictRedis()

# 创建管道对象  默认会开启事务
pipe = redis_client.pipeline()

# pipe的后续操作会被放入事务中  不会立即执行
a = pipe.set(name, zhangsan)
b = pipe.get(name)

# 提交事务   提交才会执行事务中的命令
c = pipe.execute()

print(a)
print(b)
print(c)

注意点:

  • 创建管道后, 默认会开启事务
  • 放入事务中的命令在执行 execute方法后才会执行

Redis事务

原文:https://www.cnblogs.com/tracydzf/p/13188026.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!