3、redis集群操作交集,差集,并集出现的问题

redis集群操作交集,差集,并集出现的问题

我们使用redis集群添加数据时,redis集群会根据每个key的不同,来对应到没有hash槽位,写入到不同的redis主节点上,虽然我们读取数据的时候,会根据用户请求的可以重定向到对应槽位的redis服务器上,就可以读出来,返回给用户。但是,当我们取交集,差集,并集的时候,两个key如果不在同一个redis服务器上,是不能够读取出来的,会报以下的错误:

redis.clients.jedis.exceptions.JedisClusterOperationException: No way to dispatch this command to Redis Cluster because keys have different slots.
at redis.clients.jedis.JedisClusterCommand.run(JedisClusterCommand.java:39)
at redis.clients.jedis.JedisCluster.sinter(JedisCluster.java:1553)
at cn.zj.test.JedisTest.testJedis(JedisTest.java:56)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)

解决方式:我们在存key的时候,将key存在同一台redis服务器上,怎样写入到同一台服务器呢?

  • 使用{regula}1,{regula}2,保证regula是一样的,{}是告诉redis集群,我们需要存入到同一台redis服务器上,就会根据regula来分配槽位,这样就解决了redis集群取交集,差集,并集的问题。
posted @   站着说话不腰疼  阅读(715)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示