最近在使用python连接redis时很奇怪的报以下错误信息:
Traceback (most recent call last):
File "D:/chen_test/redist_test/redis_copy2.py", line 10, in <module>
print r.set('test', 111)
File "D:\Anaconda\lib\site-packages\redis\client.py", line 1072, in set
return self.execute_command('SET', *pieces)
File "D:\Anaconda\lib\site-packages\redis\client.py", line 573, in execute_command
return self.parse_response(connection, command_name, **options)
File "D:\Anaconda\lib\site-packages\redis\client.py", line 585, in parse_response
response = connection.read_response()
File "D:\Anaconda\lib\site-packages\redis\connection.py", line 582, in read_response
raise response
redis.exceptions.ResponseError: MOVED 6918 127.0.0.1:6381
报错原因:因为redis由单节点变为集群,而python的redis连接包暂时还不支持redis集群连接方式,需要更换连接包
解决方法:
可以使用rediscluster连接redis集群:
参考文档:
https://pypi.python.org/pypi/redis-py-cluster
修改后的连接方法:
# -*- coding:utf-8 -*-
from rediscluster import StrictRedisCluster
nodes = [{"host": "localhost", "port": "6379"}]
r = StrictRedisCluster(startup_nodes=nodes, decode_responses=True)
print (r.set('test', 111))