Redis重启Redisson出错:Unable to send command!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis重启Redisson出错:Unable to send command!相关的知识,希望对你有一定的参考价值。

参考技术A 最近在公司开发环境发现一个问题,是这样的,开发环境的机器不断打日志,由于日志的定时清理不及时,导致磁盘满了,然后redis由于没法持久化,所以就连不上了,这个时候发现之后我们重启了redis,然后就回家了。

第二天应用在使用redisson的分布式锁的时候就发现错误: org.redisson.client.WriteRedisConnectionException: Unable to send command! ,就是分布式锁的命令无法执行,导致许多业务都出现问题。

一开始以为是redis出问题,检查了一下,并重启了一下,还是有问题,最后重启某个微服务之后发现没问题了,到这里定位到是redisson连接管理出问题了,但是具体如何解决还一脸懵逼。

看了错误堆栈:

就知道关闭通道的时候出问题,但是具体什么原因不知道,搜索引擎老师也不知所措

最终,在redisson的github仓库的issue中找到了答案:
The connection not reconnect #1811

刚好我们使用的redisson版本也是 3.9.1 ,这个issue发生提到的错误,问题的出现基本和我遇到的一致,并且在 Fixed - connection is not reconnected #1811 中解决了,所以,这样子,升级!搞定!

问题的主要原因是:在redis出问题之后,watchdog发现连接无效之后,然后打印了一个警告日志之后,就没法有自动重连了,导致继续使用该连接的时候出问题,问题解决,ConnectionWatchdog.channelInactive.tryReconnect方法:

解决版本如下,如果遇到相同的问题可以选择一个升级:
redisson-3.11.3、redisson-3.11.2、redisson-3.11.1、redisson-3.11.0、redisson-3.10.7、redisson-3.10.6、redisson-3.10.5、redisson-3.10.4、redisson-3.10.3、redisson-3.10.2、redisson-3.10.1、redisson-2.15.2、redisson-2.15.1

Redisson Redis 客户端

Redisson 2.3.0 发布了,勤快学qkxue.net发现Redisson 是基于 Redis 服务之上构建的分布式、可伸缩的 Java 数据结构,高级的 Redis 客户端。

该版本更新内容如下:

Feature - new service added RExecutorService. More info about it here
Feature - new service added RScheduledExecutorService. More info about it here
Feature - new service added RLiveObjectService. More info about it here (big thanks to Rui Gu for this amazing feature)
Feature - new object added RBoundedBlockingQueue. More info about it here
Feature - Redis deployment tool. More info about it here
Feature - Cluster management tool. More info about it here
Feature - Avro and Smile codecs added
Breaking api change - all config classes moved to org.redisson.config package
Breaking api change - all classes moved from org.redisson.core to org.redisson.api package
Breaking api change - switched from io.netty.util.concurrent.Future to org.redisson.api.RFuture interface
Fixed - division by zero in WeightedRoundRobinBalancer (thanks to Shailender R Bathula)

详情点击:

    https://github.com/mrniko/redisson/blob/master/CHANGELOG.md

下载:

以上是关于Redis重启Redisson出错:Unable to send command!的主要内容,如果未能解决你的问题,请参考以下文章

Redisson连接redis单机和哨兵模式

SpringBoot集成redisson操作redis

redisson 应用(一)

redis分布式锁redisson

Redis实战——Redisson分布式锁

Redisson Redis 客户端