[英]Redis mget not working as expected with redis-py-cluster client
[英]Can 'zpopmax' be used with redis-py-cluster?
我正在嘗試將zpopmax
與python rediscluster
(repo)中的排序集一起使用,但是下面非常簡單的程序因AttributeError
失敗。
問 :我如何能實現zpopmax
與rediscluster
? 如果確實沒有實現,則必須在事務中同時使用zrevrange
和zrem
以確保線程安全。
我注意到該命令在常規(非集群) redis-py中可用。 我也看到了在git repo中測試過的命令,所以我可能缺少一些簡單的東西。
我也嘗試使用常規redis
嘗試zpopmax
並得到相同的錯誤。
我的reids -py-cluster是v1.3.6。 我的redis-py是v2.10.6。 我實際的Redis是v5.0.4
from rediscluster import StrictRedisCluster as s
rc = s(startup_nodes=[{'host': 'localhost', 'port': '7000'}],
decode_responses=True)
rc.zadd('my-set-name', 3, 'my-key-name')
# print to confirm zadd worked
print(rc.zrange('my-set-name', 0, -1, withscores=True))
# expecting this to print 'my-key-name'
print(rc.zpopmax('my-set-name')) # Attribute Error
我希望最后一個打印語句的輸出類似於“ my-key-name”,但是我遇到了AttributeError
謝謝您的幫助 :)
問題似乎是redis-py在3.0版中添加了對ZPOPMAX
支持 ,但是redis-py-cluster 1.3.6 需要較舊版本的redis-py。
這里最簡單的解決方案可能就是等待redis-py-cluster更新。 這種釘扎造成的問題已得到確認 ,下一版本將增加對redis-py 3.0的支持 。
版本! 正如Kevin的回答所記錄的,這里是版本。 但是,實際上我可以使此設置起作用:
from rediscluster import RedisCluster as s
rc = s(startup_nodes=[{'host': 'localhost', 'port': '7000'}],
decode_responses=True)
rc.zadd('my-set-name', {'my-key-name':3})
print(rc.zpopmax('my-set-name')) # WORKS! (prints [('my-key-name', 3.0)])
感謝凱文·克里斯托弗·亨利 ( Kevin Christopher Henry)的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.