后端程序无法连接redis集群,无法启动或正常使用

@后端程序无法连接redis集群,无法启动或正常使用

一. 问题

1.1 情况描述

对公司的一个项目两个板块进行日常检查的时候,发现日志一直报错,都表现为redis连接失败。经过了重启redis三台服务器的redis和sentinel容器、关闭开启这三台服务器的防火墙、以及重启项目后端服务后,情况依然没解决,甚至其中一个板块的后端服务直接无法启动。后来咨询项目经理才得以解决。

2.2 截图

后端程序1报错日志2
后端程序1报错日志2
后端程序2报错日志1

二. 解决办法

2.1 redis服务器上的修改

先停止三台redis服务器上所有redis和sentinel的容器。然后修改redis上sentinel的配置文件,将monitor的ip改成其他的ip,另外两个redis服务器上的sentinel也改成一样的ip。再重启redis和sentinel容器。

sentinel配置文件修改

2.2 后端程序的处理

重启后端程序,发现恢复正常。

正常后的后端日志

三. 总结

报错日志里面的172.18.0.1是docker的ip,redis服务器的防火墙最好开启,设置白名单策略。

防火墙白名单

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,连接Redis集群时同样可以使用连接池来管理连接。下面是一个使用连接连接Redis集群的示例代码: ```python import redis from rediscluster import RedisCluster from redis.connection import ConnectionPool startup_nodes = [{"host": "localhost", "port": "7000"}, {"host": "localhost", "port": "7001"}] pool = ConnectionPool.from_url("redis://localhost:7000", max_connections=10) r = RedisCluster(startup_nodes=startup_nodes, connection_pool=pool) r.set('key', 'value') value = r.get('key') print(value) ``` 在这个示例中,我们首先创建了一个Redis集群的节点列表startup_nodes。然后,我们使用ConnectionPool.from_url()方法创建了一个连接池对象,并将其传递给RedisCluster()构造函数。在执行Redis命令时,RedisCluster对象会从连接池中获取一个连接来执行操作。在操作完成后,连接会自动返回到连接池中,以便其他操作可以重用它。 连接池同样可以设置最大连接数和超时时间等参数,以适应不同的应用场景。例如: ```python pool = ConnectionPool.from_url("redis://localhost:7000", max_connections=10, timeout=5) ``` 在这个示例中,我们设置了连接池的最大连接数为10,超时时间为5秒。当连接池中的连接已经被全部使用且没有空闲连接时,新的连接请求会被阻塞,直到有连接被释放为止。同时,连接的超时时间也可以避免连接被长时间占用而无法释放的情况发生。 通过使用连接池,可以显著提高Redis集群连接的效率和稳定性,特别是在高并发和大规模数据处理的场景下。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值