Redis Cluster处理MULTI/EXEC事务以及Multiple主键命令时的限制
来源:互联网 发布:手机太阳系模拟软件 编辑:程序博客网 时间:2024/06/15 15:16
Redis Cluster处理MULTI/EXEC事务以及Multiple主键命令时的限制
(2013-05-30 11:32:55)![](http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif)
标签:
redis
cluster
命令处理
分类:IT那点事儿说起来却也又臭又长情景一:MULTI/EXEC事务中的所有命令均操作相同的主键,且该主键就在当前连接的Redis节点上
[root@compute-09-00 ~]# /usr/local/redis/bin/redis-cli
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set hello world
QUEUED
redis 127.0.0.1:6379> set hello earth
QUEUED
redis 127.0.0.1:6379> set hello china
QUEUED
redis 127.0.0.1:6379> exec
1) OK
2) OK
3) OK
执行结果:事务中的每条命令都可以正确执行!
情景二:MULTI/EXEC事务中的所有命令均操作相同的主键,但该主键不在当前连接的Redis节点上
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> get foo
(error) MOVED 12182 192.168.32.4:6379
redis 127.0.0.1:6379> set foo bar
(error) MOVED 12182 192.168.32.4:6379
redis 127.0.0.1:6379> exec
(empty list or set)
执行结果:事务中的任何命令都无法执行,对于每条命令均返回MOVED信息!
情景三:MULTI/EXEC事务中的所有命令操作不同的主键,且某些主键不在当前连接的Redis节点上
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set hello america
QUEUED
redis 127.0.0.1:6379> set foo rab
(error) MOVED 12182 192.168.32.4:6379
redis 127.0.0.1:6379> exec
1) OK
redis 127.0.0.1:6379> get hello
"america"
执行结果:主键在当前连接的Redis节点上的命令可以正确执行,主键不在当前连接的Redis节点上的命令返回MOVED信息!
情景四:MULTI/EXEC事务中的所有命令操作不同的主键,且所有主键均在当前连接的Redis节点上
redis 192.168.32.3:6379> multi
OK
redis 192.168.32.3:6379> set id 10003
QUEUED
redis 192.168.32.3:6379> set number 20004
QUEUED
redis 192.168.32.3:6379> set student30098
QUEUED
redis 192.168.32.3:6379> exec
1) OK
2) OK
3) OK
执行结果:事务中的所有命令均可以成功执行!
情景五:Multiple主键命令包含了不同的主键,且所有主键均在当前连接的Redis节点上
redis 192.168.32.3:6379> mset id 10004 number20005 student 30099
(error) ERR Multi keys request invalid in cluster
redis 192.168.32.3:6379> mget id numberstudent
(error) ERR Multi keys request invalid in cluster
执行结果:命令无效,无法执行!
情景六:Multiple主键命令包含了多个相同的主键,且该主键在当前连接的Redis节点上
redis 192.168.32.3:6379> mset id 10004 id 20005id 30099
OK
redis 192.168.32.3:6379> mget id id id
1) "30099"
2) "30099"
3) "30099"
执行结果:命令有效,成功执行!
情景七:Multiple主键命令包含了多个相同的主键,但该主键不在当前连接的Redis节点上
redis 192.168.32.3:6379> mset hello world helloearth hello universe
(error) MOVED 866 192.168.32.2:6379
redis 192.168.32.3:6379> mget hello hellohello
(error) MOVED 866 192.168.32.2:6379
执行结果:命令有效,返回MOVED信息!
阅读全文
0 0
- Redis Cluster处理MULTI/EXEC事务以及Multiple主键命令时的限制
- Redis Cluster处理MULTI/EXEC事务以及Multiple主键命令时的限制
- redis的事务(redis的watch,multi,exec用法)
- Spring Redis 事务Multi Exec Watch
- Redis - 事务(multi,exec,watch,unwatch)
- redis 事务(MULTI 、 EXEC 、 DISCARD 和 WATCH )
- redis cluster 下的命令
- Redis cluster multi-key operation
- multi事务 watch命令
- Redis中multi,exec,watch,发布与订阅模式命令介绍笔记(9)
- redis - cluster命令
- redis cluster安装以及操作
- redis集群的Cluster方式配置以及spring的集成
- redis Cluster 命令 redis-trib.rb 命令
- 结合redis设计与实现的redis源码学习-16-事务(multi.c)
- redis-cluster的搭建
- Redis Cluster的安装
- Redis-Cluster的安装
- 获取数组中最大值
- Hibernate :A different object with the same identifier value was already associated with the session
- js 首字母转换成小写或者大写
- Centos rpm包依赖
- 关于"极光"APP推送JPUSH的服务器端使用
- Redis Cluster处理MULTI/EXEC事务以及Multiple主键命令时的限制
- Android SVG和Lottie库播放动画(Json)
- iOS系统特点
- CPU-bound(计算密集型) 和I/O bound(I/O密集型)
- Android界面性能优化必读
- javaSE-Day6-对象比较/static
- 完全备份、差异备份以及增量备份的区别
- Gradle sync failed: 'support-v4-25.3.1' already disposed:
- matlab中linspace函数用法