spring-data-redis的一个缺陷导致redis报错(精简版)
原文在这里
为什么要再写个精简版呢,一个是原来的文章偷懒排版太差,另一个是原来的文章代码贴得太多怕大家看的头疼。有同事也遇到这个问题了,搜到了我的文章,表示太长,不想看,好吧,下面是精简版。
本篇只简述问题、原理、解决方案,要看详细心路历程就去看原来的那篇文章吧。
问题
之前用spring-data-redis,调用redis的expire方法的时候,出现了很奇怪的错误。
jedis.exceptions.JedisConnectionException: Unknown reply: 3
org.springframework.data.redis.RedisConnectionFailureException: Unknown reply: 3; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: 3
就类似的可能这个3是别的什么奇怪的字符都有可能。
原理
spring在做expire处理的时候,不管你用的单位是什么,他最后都会处理成毫秒传给redis,但是这里用的类型是int,是不是很烦,int最大值是2147483647,算一下支持多少天,24.8天。这里就知道原因了,只需要把失效时间设置为小于24.8天就OK了。另一种方案就是别用spring-data-redis去处理。