redis的Sentinel和Cluster的引入方式和常见切换报错

本文介绍了Redis中Cluster和Sentinel的使用方法及切换过程中的常见错误。包括了Cluster和Sentinel的不同引入方式,以及在更换集群配置时可能遇到的错误示例和解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

今天工作遇到这么个需求,需要对redis进行压力测试,之前的redis是Sentinel的,现在db组要求换成Cluster,今天小小的记录一下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、两种脚本写法

1.Cluster

在这里插入图片描述

2.Sentinel

在这里插入图片描述

报错

报错一:ERR unknown command CLUSTER, with args beginning with: SLOTS,

注意点是Cluster和Sentinel的ip地址会不同,改方式时地址ip不要照搬,记得问清楚,不然会发生下图所示报错:
在这里插入图片描述
解决方案:换成正确ip

报错二:Cannot cast object ‘redis.clients.jedis.JedisCluster@5cc126dc’ with class ‘redis.clients.jedis.JedisCluster’ to class ‘redis.clients.jedis.Jedis’

在这里插入图片描述
解决方案:
Sentinel引入的是: public static Jedis jedis
Cluster引入的是:public static JedisCluster jedis;
切换集群方式时,引入的类记得切换

总结

这边文章将redis的Sentinel和Cluster的引入方式进行了介绍,对比,但是仅仅是把两者的不同展示了一下,巨人的肩膀如下
Redis之——Jedis、jedisCluster的使用
cluster java调用redis

### 单节点 Redis 只读副本解决方案 当遇到 `READONLY You can't write against a read only replica` 错误时,通常是因为客户端尝试向一个被配置为只读从库的 Redis 节点写入数据。以下是针对单节点 Redis 的具体解决方法: #### 方法一:确认当前角色并切换为主节点 如果 Redis 实例意外成为从节点,则需要将其重新设为主节点。可以通过以下命令实现: ```bash REPLICAOF NO ONE ``` 此命令会停止该实例作为任何其他主节点的从属关系,并使其恢复为主节点状态[^4]。 #### 方法二:调整配置允许从节点可写 对于某些场景下确实希望从节点支持写操作的情况,可以临时关闭从节点只读模式。进入 Redis 容器后执行如下指令: ```bash config set slave-read-only no ``` 这一步骤能够使从节点接受写请求[^3]。需要注意的是,在生产环境中开启此项可能会带来一致性风险,因此需谨慎评估业务需求后再决定是否采用这种方法。 #### 方法三:统一访问地址避免隐含主从转换 有时即使只有一个物理上的 Redis 服务运行着也可能因不同逻辑路径下的IP映射而引发类似主从结构的行为表现。比如本地回环地址(`127.0.0.1`)与其他网络接口地址混用可能导致此类现象发生。建议统一切换到单一入口如localhost或者具体的网卡绑定地址来进行交互以减少不必要的复杂度潜在隐患[^5]。 #### 方法四:利用高级特性管理高可用架构 为了更稳健地处理可能存在的单点故障以及提升整体系统的可靠性水平,推荐引入Redis Sentinel这样的监控机制或者是构建完整的Cluster拓扑结构来替代简单的独立部署形式。这些工具可以帮助自动检测失败状况并将备用资源迅速拉起继续提供服务而不至于让用户感知中断事件的发生[^2]。 通过上述几种途径之一即可有效缓解乃至彻底消除关于“只读副本”的困扰问题。当然实际应用过程中还需综合考虑性能指标、维护成本等因素做出最佳抉择。 ```python import redis try: r = redis.StrictRedis(host='localhost', port=6379, decode_responses=True) result = r.set('test_key','value') except Exception as e: print(f"Error occurred:{e}") finally: pass ``` 以上代码片段展示了如何安全地连接至Redis服务器并尝试设定键值对的过程。其中包含了异常捕获部分以便于及时发现问题所在位置。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值