应用到redis墙问题
验证代码
import redis
from redis.sentinel import Sentinel
from redis.sentinel import SentinelConnectionPool
# 哨兵连接
sentinel = Sentinel([('1.1.1.1', 8021), ('1.1.1.2', 8022), ('1.1.1.3', 8023)],
socket_timeout=0.1)
# 连接池
pool = SentinelConnectionPool("cluster_name", db=5, password="1234",
sentinel_manager=sentinel, check_connection=True)
# 获取一个StrictRedis池化实例,red线程安全,设置成全局即可
red = redis.StrictRedis(connection_pool=pool)
场景
-->哨兵,-/->实例
验证代码没问题,red.keys()
夯死60秒超时:redis.exceptions.ConnectionError: Error 110 connectiong to 实例:端口. Connection timed out
-->哨兵,-/->实例
- 如果应用已经连接上了red实例,即使应用到哨兵墙不通,但是应用还是没有异常,说明应用根据哨兵获取到实例信息,然后直连实例
- 如果应用没有连接上redis实例,应用到哨兵墙都不通,则会出现:
redis.sentinel.MasterNotFoundError: No Master found for '集群名'
(但是只要一个哨兵是通的那么就没有问题)
-/->哨兵,-/->实例
同理-/->哨兵,-->实例