spring-data-redis踩坑

问题

最近项目经常出现下图报警

错误信息:
Bulk add of multiple elements with the same score is not supported. Add the elements individually。
意思就是SortedSet不能批量add多个相同score的元素

定位

根据异常信息首先定位到

javaorg.springframework.data.redis.connection.jedis.JedisConnection.zAddArgs

这个函数貌似就是用来做版本控制的,如果jedis版本低于要求,且批量操作score相同,则会抛出异常

要求jedis版本不低于2.4

解决

那么问题就很明显了,当前项目肯定是最近不小心引入了低于2.4版本的jedis。打开maven依赖图,果不其然,之前一直引用的是2.4.2版本的jedis,但是最近新需求开发过程中,引入其他项目组的依赖包含了2.1.0版本的jedis。立马加上exclusion,就万事大吉啦!# 思考spring-data-redis在这块为什么要限制jedis版本呢?对比了半天jedis的2.3和2.4版本,没发现什么不同。查阅资料redis的zadd历史

redis 2.4版本之后才支持批量操作。但是,这和jedis版本没多大关系吧😂😂

--------------------------------------持续思考中(撸码中)----------------------------------


后续

不死心,阅读jedis源码定位到这里:

redis.clients.jedis.BinaryJedis.zadd(final byte[] key, final Map scoreMembers)

打开这个方法的git记录

这次修改允许批量添加score相同的元素,那之前为什么不能呢?对比此次提交之前的代码

我们注意到,map是传入zet元素的,修改之前是以score为key,member为value,修改之后以member为key,score为value,这样就解决了不能批量操作score相同的元素的bug。

然而我发现jedis在2.3.0版本就解决了这个问题,spring-data-redis为什么要限制不低于2.4.0版本呢?浪费我大半天时间去看2.3和2.4版本的区别🤨🤨🤨。学会看git提交记录还是很重要的(前提是要好好写😳😳)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 4,062评论 2 27
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,120评论 1 51
  • 文:芷雅 (1)对不起,我没时间! 今天我们来聊一聊“阅读”这个话题! 在这个快速变迁的时代,有人凭借阅读快速崛起...
    芷雅成长日记阅读 416评论 0 1
  • (原创) 稚嫩的猫仔在夜里呼唤 呼唤不归的温暖 寒风吹颤了它的身体 它揣着惊恐 释放出无助 躲躲藏藏穿梭在人造野地...
    闲耕堂一一想想阅读 344评论 3 7
  • 姓名:刘敬武 公司:临沂和创饲料有限公司 【反省总结第60天,始于20180420今天是20180618】 【知~...
    0dbb66a89a27阅读 82评论 0 1