You need to enable JavaScript to run this app.
文档中心
缓存数据库 Redis 版

缓存数据库 Redis 版

复制全文
下载 pdf
报错和异常
为什么通过 Redission 客户端连接 Redis 时,会出现 "ERR unknown command 'READONLY'" 报错?
复制全文
下载 pdf
为什么通过 Redission 客户端连接 Redis 时,会出现 "ERR unknown command 'READONLY'" 报错?
问题现象​
当通过 Redission 客户端连接缓存数据库 Redis 版实例时,出现了 ERR unknown command 'READONLY' 错误提示,具体报错信息如下图所示。​
​errorcode​​
可能原因​
Redission 客户端在 Cluster 模式下,ReadMode 默认取值为 SLAVE,此时 Redission 客户端会默认发送 READONLY 命令至 Redis 数据库,但缓存数据库 Redis 版当前不支持READONLY 命令。所以,当使用 Redission 客户端的 Cluster 模式连接 Redis 实例时,可能会出现 ERR unknown command 'READONLY' 报错。更多关于 Redis 支持的命令详情,请参见命令支持。​
处理方法​
您可以参考如下任意一种方法避免出现上述报错。​
方法一(推荐):将 Redission 客户端设置为 Single 模式​
Redission 客户端的 Single 模式不会使用 Cluster 相关命令(包括 READONLY 命令),可以避免出现类似 ERR unknown command 'READONLY' 的报错。​
您可以参考如下代码,将 Redission 客户端设置为 Single 模式。​
​
Config config = new Config();​
// 使用 Single 模式​
config.useSingleServer()​
// Redis 实例的访问地址​
.setAddress("redis://redis-shzlxvk38vs2j****.redis.volces.com:6379")​
// 本文示例中使用默认账号 default 连接 Redis 数据库,因此仅需设置数据库登录密码​
.setPassword("YourPassword");​
RedissonClient redisson = Redisson.create(config);​
​
方法二:将 Cluster 模式的 ReadMode 设置为 MASTER​
如业务需使用 Redission 客户端的 Cluster 模式,您可以将 ReadMode 设置为 MASTER(即仅从主节点读取数据),设置之后,Redission 客户端将不会发送 READONLY 命令至 Redis 数据库,从而避免出现 ERR unknown command 'READONLY' 报错。​
您可以参考如下代码,将 Redission 客户端 Cluster 模式下的 ReadMode 设置为 MASTER。​
​
Config config = new Config();​
// 使用 Cluster 模式​
config.useClusterServers()​
// 设置 ReadMode 为 MASTER​
.setReadMode(ReadMode.MASTER)​
// Redis 实例的访问地址​
.addNodeAddress("redis://redis-shzlxvk38vs2j****.redis.volces.com:6379")​
// 本文示例中使用默认账号 default 连接 Redis 数据库,因此仅需设置数据库登录密码​
.setPassword("YourPassword");​
RedissonClient redisson = Redisson.create(config);​
​
​
最近更新时间:2025.11.04 21:37:42
这个页面对您有帮助吗?
有用
有用
无用
无用