簡體   English   中英

'zpopmax'可以與redis-py-cluster一起使用嗎?

[英]Can 'zpopmax' be used with redis-py-cluster?

我正在嘗試將zpopmax與python rediscluster (repo)中的排序集一起使用,但是下面非常簡單的程序因AttributeError失敗。

:我如何能實現zpopmaxrediscluster 如果確實沒有實現,則必須在事務中同時使用zrevrangezrem以確保線程安全。

可能有用的背景

我注意到該命令在常規(非集群) 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM