在循环里面不停的set和get,会报这个错误,
用redis-py-cluster
我看过很多文章,这个错误就是很离谱,java连接集群能自动搜索key所在的哪个redis里面,但是python这个包不会
所以循环就会报错,因为他尝试连到一个错误的redis里面,
只能用最笨的办法解决,
class te():
def __init__(self,) -> None:
self.node1=1
self.startup_nodes1 = [
{"host":"127.0.0.1", "port":6372},
]
self.startup_nodes2 = [
{"host":"127.0.0.1", "port":6375},
]
self.startup_nodes3 = [
{"host":"127.0.0.1", "port":6373},
]
def connect(self):
self.redisconn = StrictRedisCluster(startup_nodes=self.startup_nodes1,password="1234567", skip_full_coverage_check=True,decode_responses=True,)
def set(self,key,text):
a=0
while a<10:
try:
self.redisconn.set(key,text)
break
except:
if(self.node1==1):
self.node1=2
self.redisconn = StrictRedisCluster(startup_nodes=self.startup_nodes2,password="1234567", skip_full_coverage_check=True,decode_responses=True,)
elif(self.node1==2):
self.node1=3
self.redisconn = StrictRedisCluster(startup_nodes=self.startup_nodes3,password="1234567", skip_full_coverage_check=True,decode_responses=True,)
elif(self.node1==3):
self.node1=1
self.redisconn = StrictRedisCluster(startup_nodes=self.startup_nodes1,password="1234567", skip_full_coverage_check=True,decode_responses=True,)
a=a+1
def get(self,key):
a=0
while a<10:
try:
re=self.redisconn.get(key)
break
except:
if(self.node1==1):
self.node1=2
self.redisconn = StrictRedisCluster(startup_nodes=self.startup_nodes2,password="1234567", skip_full_coverage_check=True,decode_responses=True,)
elif(self.node1==2):
self.node1=3
self.redisconn = StrictRedisCluster(startup_nodes=self.startup_nodes3,password="1234567", skip_full_coverage_check=True,decode_responses=True,)
elif(self.node1==3):
self.node1=1
self.redisconn = StrictRedisCluster(startup_nodes=self.startup_nodes1,password="1234567", skip_full_coverage_check=True,decode_responses=True,)
a=a+1
return re
def test():
list = [
'14900000001',
'14900000002',
'14900000003',
'14900000004',
'14900000005',
'14900000006',
'14900000007',
'14900000008',
'14900000009',
'14900000010'
]
conn=te()
conn.connect()
for i in range(0,len(list)):
conn.set('user_phone_'+list[i],i)
print(conn.get('user_phone_'+list[i]))
if __name__=="__main__":
test()