redis.exceptions.ResponseError: MOVED 6918

最近在使用python连接redis时很奇怪的报以下错误信息:

Traceback (most recent call last):
  File "D:/chen_test/redist_test/redis_copy2.py", line 10, in 
    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)

你可能感兴趣的:(python)