专栏名称: Bazinga
web后台
目录
相关文章推荐
马靖昊说会计  ·  女孩选老公,要“贪财”! ·  昨天  
生态梦网  ·  正式开建!生态城再添海洋文旅新地标 ·  2 天前  
51好读  ›  专栏  ›  Bazinga

记Dynomite与spring-data-redis版本不兼容问题

Bazinga  · 掘金  ·  · 2021-03-19 13:11

正文

阅读 3

记Dynomite与spring-data-redis版本不兼容问题

一、背景

dynomite介绍

关于Redis双向同步预研,应用在接入Dynomite之后出现Redis连接异常情况,抛出 Unexpected end of stream

二、结论

  1. Dynomite关于Redis指令支持 中表示不支持 TIME 指令
  2. spring-data-redis 1.6.0.RELEASE 中当执行 PEXPIRE 有效期超过 Integer.MAX_VALUE ,避免溢出,会采用 TIME 指令获取Redis Server时间,并基于此进行叠加
  3. 升级 spring-data-redis 版本可解决该问题(验证 1.8.16.RELEASE 可解决)

三、过程

3.1 现象

应用在接入Dynomite之后,调用某接口出现Redis连接异常。异常日志如下

Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.
	at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:199)
	at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)
	at redis.clients.jedis.Protocol.process(Protocol.java:151)
	at redis.clients.jedis.Protocol.read(Protocol.java:215)
	at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
	at redis.clients.jedis.Connection.getIntegerReply(Connection.java:265)
	at redis.clients.jedis.BinaryJedis.expire(BinaryJedis.java:436)
	at org.springframework.data.redis.connection.jedis.JedisConnection.expire(JedisConnection.java:807)
复制代码

3.2 定位

确认Redis客户端配置

进入应用终端,使用Arthas获取 JedisConnectionFactory 信息

java -jar arthas-boot.jar

# 获取RequestMappingHandlerAdapter索引
tt -t org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter invokeHandleMethod

#






请到「今天看啥」查看全文