Spring data redis的一个bug

起因

前两天上线了一个新功能,导致线上业务的缓存总是无法更新,报错也是非常奇怪,redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: 5,google到的原因是Spring data redis中的scan操作,它获取了redis的连接之后,在操作没有完全结束之前就把redis连接放回连接池,其它线程从连接池里复用该连接时,会导致数据读取的错误。

bug修复

官方维护人员在src/main/java/org/springframework/data/redis/core/DefaultHashOperations.java里使用新建redis连接,并等cursor关闭的时候才关闭connection的方式解决该bug。

解决办法

  1. 提升spring data redis版本到1.8,尚未release,可以拉取最新代码,编译成jar包,并配置在local repository
  2. 换个实现方案,尝试用其它数据结构,如hset等

引用

JedisConnection.java

bug地址

posted @ 2016-10-16 21:14  Srggggg  阅读(1023)  评论(0编辑  收藏  举报