设为首页 收藏本站
查看: 831|回复: 0

[经验分享] Redis.py客户端的命令总结【一】

[复制链接]

尚未签到

发表于 2015-7-21 08:00:42 | 显示全部楼层 |阅读模式
  在网上搜了一下命令,但大部分都处在连接,set,get,pipline的高层阶段,所以自己总结一下
  (一)Key

  • 【连接】:r = redis.Redis(host='localhost',port=6379,db=0)
  r = redis.StrictRedis()
  pool = redis.ConnectionPool(host='',port=,db=)
  r = redis.Redis(connection_pool=pool)
  r = redis.Redis(unix_socket_path='')

  • pipeline:
  r = redis.Redis(...)
  pipe = r.pipeline()
  pipe.set(...).sadd(...)....   .execute()
  这个是原子性的,不想原子性则:
  pipe = r.pipeline(transactionn=False)

  • del:
  del命令在这里用delete代替:r.del(key1, key2)

  • dump:序列化给定key,并返回序列化的值
  r.dump(key)

  • restore:反序列化:
  r.restore(key,0,'/...')

  • exists:某键是否存在
  r.exists(key)

  • expire:为给定key设置生存时间,秒为单位
  
  >>> r.expire("set",30000000)
    True
    >>> r.ttl("set")
    29999993L

  • pexpire:同上,毫秒为单位
  

  • expireat:同上,时间参数用UNIX时间戳以秒为单位
  >>> r.expireat("set",1355292000000000)
         True
         >>> r.ttl("set")
           1355290610413302L

  • pexpireat


  • keys pattern:
  r.keys()
  
  >>> r.keys()
    ['set', 'bbs', 'bing']
    >>> r.keys('*s*')
    ['set', 'bbs']
  

  • flushdb:
  r.flushdb()

  • move: 将当前数据库key移动到给定数据库db中:不存在返回FALSE:两个数据库有相同key,move失败:
  
  >>> r.move("set",1)
    True
    >>> r1.keys()
    ['set', 'test', 'bbs', 'age']
    >>> r.get("set")
    >>> r1.get("set")
    "set(['waterwood', 'bbs.byr.cn'])"
    >>>
  

  • object?
  • persist:移除给定key生存时间:
  
  >>> r.expire("set",100000)
    True
    >>> r.ttl("set")
    99995L
    >>>
    >>>
    >>>
    >>> r.get("set")
    'another_set'
    >>> r.persist("set")
    True
    >>> r.ttl("set")
    >>>
  

  • pttl:以毫秒返回剩余生命时间 key不存在,返回-2,没有设置剩余时间,返回-1
  • randomkey:
  • r.randomkey()
  • rename:
      >>> r.keys()
  ['set', 'bbs', 'bing']
    >>> r.rename("set","sset")
    True
    >>> r.keys()
    ['sset', 'bbs', 'bing']
    >>> r.rename("lala","ma")
    Traceback (most recent call last):
      File "", line 1, in
      File "/Library/Python/2.7/site-packages/redis/client.py", line 764, in rename
        return self.execute_command('RENAME', src, dst)
      File "/Library/Python/2.7/site-packages/redis/client.py", line 394, in execute_command
        return self.parse_response(connection, command_name, **options)
      File "/Library/Python/2.7/site-packages/redis/client.py", line 404, in parse_response
        response = connection.read_response()
      File "/Library/Python/2.7/site-packages/redis/connection.py", line 316, in read_response
        raise response
    redis.exceptions.ResponseError: ERR no such key
    >>>
  试图rename不存在的key时,产生异常
  renamenx:不存在new_key时才rename

  • sort:
  •   >>> r.lpush("num",80,89,12,-5,32)
    5L
    >>> r.sort("num")
    ['-5', '12', '32', '80', '89']反序?
  • 源文件中的定义函数为:
    def sort(self, name, start=None, num=None, by=None, get=None,
    desc=False, alpha=False, store=None, groups=False):
  •   >>> r.sort("num",desc=True)
    ['89', '80', '32', '12', '-5']
  • 同理字母顺序:
  •   >>> r.lpush("web","www.baidu.com")
    1L
    >>> r.lpush("web","www.google.cn")
    2L
    >>> r.sort("web",alpha=True)
    ['www.baidu.com', 'www.google.cn']
    >>> r.lpush("web","bbs.byr.cn","hello","alibaba")
    5L
    >>> r.lrange("web",0,-1)
    ['alibaba', 'hello', 'bbs.byr.cn', 'www.google.cn', 'www.baidu.com']
    >>> r.sort("web",alpha=True,desc=True)
    ['www.google.cn', 'www.baidu.com', 'hello', 'bbs.byr.cn', 'alibaba']
    >>> r.lrange("web",0,-1)
    ['alibaba', 'hello', 'bbs.byr.cn', 'www.google.cn', 'www.baidu.com']
    >>> r.sort("web",alpha=True,desc=True,start=2,num=2)
    ['hello', 'bbs.byr.cn']
    >>> r.lrange("web",0,-1)
    ['alibaba', 'hello', 'bbs.byr.cn', 'www.google.cn', 'www.baidu.com']
    >>>
  (二)字符串

  • append:追加到key末尾:
  •   >>> r.append("myphone","Nokia")
    5L
    >>> r.get("myphone")
    'Nokia'
    >>> r.append("myphone","iphone")
    11L
    >>> r.get("myphone")
    'Nokiaiphone'
  •   >>> r.getrange("myphone",2,-1)
    'kiaiphone'
  • bitcount:计算给定字符串中被设置为1的比特位数量,可设start,end参数
  • getbit:对 key 所储存的字符串值,获取指定偏移量上的位
  • getrange:r.getrange(key,start,end)
  •   >>> r.bitcount("bits")
    0
    >>> r.setbit("bits",3,1)
    0
    >>> r.bitcount("bits")
    1
    >>> r.setbit("bits",4,0)
    0
    >>> r.bitcount("bits")
    1
    >>> r.setbit("bits",5,1)
    0
    >>> r.bitcount("bits")
    2
    >>>
  •   
  
  
  >>>
>>> r.setbit("bit-1",0,1)
0
>>> r.setbit("bit-1",3,1)
0
>>> r.setbit("bit-2",0,1)
0
>>> r.setbit("bit-2",1,1)
0
>>> r.setbit("bit-2",3,1)
0
>>> r.bitop("And","new_bit","bit-1","bit-2")
1L
>>> r.getbit("bit-1")
Traceback (most recent call last):
  File "", line 1, in
TypeError: getbit() takes exactly 3 arguments (2 given)
>>> r.getbit("bit-1",0)
1
>>> r.getbit("bit-1",1)
0
>>> r.getbit("bit-1",3)
1
>>> r.getbit("bit-2",0)
1
>>> r.getbit("bit-2",1)
1
>>> r.getbit("bit-2",2)
0
>>> r.getbit("bit-2",3)
1
>>> r.getbit("new_bit",0)
1
>>> r.getbit("new_bit",1)
0
>>> r.getbit("new_bit",3)
1
>>>

  • decr(key,*)/incr:将 key 中储存的数字值减/加*。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行DECR




  • getset(key,value)
  • mget,mset
  • msetnx/setnx
  • setex(key,seconds,value)
  • setrange(key,offset,value)
  •   >>> r.set("greeting","Hello,world")
    True
    >>> r.setrange("greeting",6,"Wahahaha")
    14
    >>> r.get("greeting")
    'Hello,Wahahaha'
    >>>
  • r.strlen(key)
  • substr():
  •   >>> r.get('name')
    'another_set'
    >>> r.substr('name',3)
    'ther_set'
    >>> r.substr('name',0,3)
    'anot'
    >>>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-88828-1-1.html 上篇帖子: Redis基本及Resque基本 下篇帖子: 【redis源码】(二)Sds
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表