如何使用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. 

任何帮助将是巨大的。

+0

该端口6379(在段1)?或7000(第2节) – Jacky

+0

@Jacky我试着用两个端口6379和7000两个部分1和2 –

+1

您需要联系到Redis的管理员,以确保所用的端口。我想知道在第2节中将端口设置为6379时引发了什么异常。请注意将端口设置为数字而不是字符串。 – Jacky

好了,这个错误是指下列之一:

  • 在这几行代码(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来操作节点和获取密钥,或者你必须自己管理这些重定向。