赞
踩
这里需要注意的是需要组成并集的各个集合的key必须是对应到redis集群中的同一个slot上,否则将会出现一个异常:CROSSSLOT Keys in request don’t hash to the same slot。所以redis提供了一种特定的标签{},这个{}内的字符串才参与计算hash slot.列如:{user}:aaa与{user}:bbb 这两个集合可以确保在同一个slot上,可以使用zunionstore求它们的并集。所以,在处理这种需要合并redis历史数据时,如果是在redis集群环境下,需要特别注意。
在cluster上所有的多key操作都会报同样的错误
172.16.0.130:6379> zadd {user}:ccc 1 petter
-> Redirected to slot [5474] located at 172.16.0.135:6379
(integer) 1
172.16.0.135:6379> zrange {user}:ccc 0 -1
1) "petter"
172.16.0.135:6379> zadd {user}:ddd 2 jack
(integer) 1
172.16.0.135:6379> zrange {user}:ddd 0 -1
1) "jack"
172.16.0.135:6379> zunionstore {user}:sum 2 {user}:ccc {user}:ddd
(integer) 2
172.16.0.135:6379> zrange {user}:sum 0 -1
1) "petter"
2) "jack"
172.16.0.135:6379>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。