2017-06-12 67 views
0

私はpythonを使ってredisについて次のシナリオを実行したいと思います。私はRedisのとredisclusterモジュールを使用してみましたpythonを使ってredisクラスタモードでgetコマンドを実行するには?

some_string取得 1)のRedis-CLI -c 2)redis_prompt >>が、運を持つ:

コマンドラインを使用します。以下は、私が試したコードは次のとおりです。

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私はセクション1と2の両方でポート6379と7000の両方を試しました。 –

+1

使用するポートを確認するには、redis管理者に連絡する必要があります。そして、私はセクション2でポートを6379に設定するとどんな例外が発生したのか知りたがっています。ポートを文字列ではなく数字に設定することに注意してください。 – Jacky

答えて

0

[OK]を、ので、このエラーは、次のいずれかを意味します

これらのコード行で
  • (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-clustercreate-cluster.shです。ポートとホスト、ノードを設定してから ./create-cluster start./create-cluster-createを実行します。しかし、最初に はクラスタモードでredis serverを起動する必要があります。 redis.confに移動し、 に設定パラメータが表示されたらcluster-enabled noと表示されます。 をyesに設定してください。その後、./redis-server ../redis.confを実行する必要があります( にredis.confのパスを指定します)。有効なクラスタが正しければ、あなたは覚えているRunning in cluster mode

重要なものが表示されます。

ターミナルでパラメータ-cは、Redisのノードはリダイレクトを実行し、キーを移動せずに属する正しいノードを見つけることができることを意味しエラー。あなたがドライバを持っている場合は、Pythonでノードを操作し、キーをフェッチするか、これらのリダイレクトを自分で管理する必要があるものと仮定します。

関連する問題