用python從redis的有序集合中一次性刪除多個值


最近做的一個東西,需要用python從redis的有序集合中一次性刪除多個值;

redis的自帶方法zrem是支持此功能的
# 移除多個元素
redis> ZREM page_rank baidu.com bing.com
(integer) 2

python redis 的api 中也支持

zrem(self, name, *values)
           Remove member ``values`` from sorted set ``name``
參數 *values 代表 values是一個元組

但是我在用這個方法的時候,一直實現不了刪除多個值,代碼如下

def zDelByValues(self,key,values):
        relSet = self._getRelSet(key)
        if   'false' == relSet:
            return 'false'
        return self.getRedisW().zrem(relSet,values)

此時參數 values 可以接收 單個數字,字符串,比如 a.zDelByValues(foo,2) , a.zDelByValues(foo,'2') ,a.zDelByValues(foo,(2)) ,都可以成功,其它情況都會拋出錯誤;

糾結半天,原來是自己傳參傳錯了;

def zDelByValues(self,key,values):
        relSet = self._getRelSet(key)
        if   'false' == relSet:
            return 'false'
        return self.getRedisW().zrem(relSet,*values) 

上面的代碼少了一個"*",一開始受php的影響,以為直接傳值就行了,而不需要將符號帶進去。以后得注意,不要犯類似的錯誤。

這樣,a.zDelByValues(foo,(2,3,4,5,6,7)) 就可以一次性完成刪除多個值的功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM