redis设计键让其映射到同一个slot

redis设计键让其映射到同一个slot

1
2
3
4
5
6

jedisCluster.sadd("{jay}aaa","71","73");
jedisCluster.sadd("{jay}bbb","72","73");
Set<String> set = jedisCluster.sinter("{jay}qqqq","{jay}ssss");
System.out.println(JedisClusterCRC16.getSlot("{jay}qqqq"));
System.out.println(JedisClusterCRC16.getSlot("{jay}ssss"));

解释:

redis在使用hash算法将键映射到slot时,只会计算{}里面的内容,若{}内的内容相同,则将键映射到同一个slot

例子中{}内容均为materialType,这样在JedisClusterCRC16.getSlot(key)时得到相同的slot编码号。

 这样就可以使用jedisCluster.sinter(key1,key2)方法取交集,避免了键在不同的slot时,该方法报错

起因: 批量删除redis key时如果key不在同一个solt内,会报错

1593336286579

1593336255437

0%