如何使用python在redis集群模式下执行get命令?
我想使用python在redis上执行以下方案。如何使用python在redis集群模式下执行get命令?
使用命令行: 1)Redis的-CLI -c 2)redis_prompt >>得到some_string
我尝试使用Redis的和rediscluster模块,但没有运气。下面是我试过的代码:
1)
r = redis.Redis(host='123.123.123.123', port=6379, db=0)
r.get('some srting')
得到了以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\redis\client.py", line 880, in get
return self.execute_command('GET', name)
File "C:\Python27\lib\site-packages\redis\client.py", line 573, in execute_command
return self.parse_response(connection, command_name, **options)
File "C:\Python27\lib\site-packages\redis\client.py", line 585, in parse_response
response = connection.read_response()
File "C:\Python27\lib\site-packages\redis\connection.py", line 582, in read_response
raise response
redis.exceptions.ResponseError: MOVED 9442 172.16.176.36:6380
2)
from rediscluster import StrictRedisCluster
startup_nodes = [{"host": "123.123.123.123", "port": "7000"}]
rc_readonly = StrictRedisCluster(startup_nodes=startup_nodes, decode_responses=True, readonly_mode=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\rediscluster\client.py", line 181, in __init__
**kwargs
File "C:\Python27\lib\site-packages\rediscluster\connection.py", line 353, in __init__
**connection_kwargs)
File "C:\Python27\lib\site-packages\rediscluster\connection.py", line 141, in __init__
self.nodes.initialize()
File "C:\Python27\lib\site-packages\rediscluster\nodemanager.py", line 240, in initialize
raise RedisClusterException("Redis Cluster cannot be connected. Please provide at least one reachable node.")
rediscluster.exceptions.RedisClusterException: Redis Cluster cannot be connected. Please provide at least one reachable node.
任何帮助将是巨大的。
好了,这个错误是指下列之一:
-
在这几行代码(1):
r = redis.Redis(host='123.123.123.123', port=6379, db=0) r.get('some srting')
你尝试获取来自主机的关键“有些刺痛”
123.123.123.123
和 端口6379
。错误redis.exceptions.ResponseError: MOVED 9442 172.16.176.36:6380
表示此密钥位于172.16.176.36:6380
。所以尝试连接。/redis-cli -c -p 6380
在这个节点,然后 执行CLUSTER GETKEYSINSLOT 6380 3
,看看这个关键其实是 这里。 -
由式(2)此错误:
rediscluster.exceptions.RedisClusterException: Redis Cluster cannot be connected. Please provide at least one reachable node
意味着什么是错与集群。也许,你没有正确初始化。首先在
/home/{{user}}/redis-yourversion/utils/create-cluster
你 会发现create-cluster.sh
。设置端口和主机和节点,然后 执行./create-cluster start
./create-cluster-create
。但首先你需要在集群模式下启动redis服务器。进入redis.conf并在 的配置参数中你会看到cluster-enabled no
。设置 为yes。在此之后,您必须运行./redis-server ../redis.conf
(给redis.conf的路径)。如果启用集群是正确的,你会看到Running in cluster mode
重要的是要记住:
参数-c在终端意味着Redis的节点可以执行重定向和发现钥匙属于不移动的正确的节点错误。如果你有一个驱动程序假设用python来操作节点和获取密钥,或者你必须自己管理这些重定向。
该端口6379(在段1)?或7000(第2节) – Jacky
@Jacky我试着用两个端口6379和7000两个部分1和2 –
您需要联系到Redis的管理员,以确保所用的端口。我想知道在第2节中将端口设置为6379时引发了什么异常。请注意将端口设置为数字而不是字符串。 – Jacky