zoukankan      html  css  js  c++  java
  • 用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)) 就可以一次性完成删除多个值的功能。

  • 相关阅读:
    数字证书原理(转)
    python update from 2.6 to 2.7
    python uwsgi 部署以及优化
    uWSGI配置(转 )
    Python程序的性能分析指南(转)
    mysql 暴力破解 root账号密码
    VMware虚拟机实用经验总结十一条
    小技巧之指定refer
    cookie和session
    web相关
  • 原文地址:https://www.cnblogs.com/mingaixin/p/2877057.html
Copyright © 2011-2022 走看看