Redis.py客戶端的命令總結【一】


在網上搜了一下命令,但大部分都處在連接,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 "<stdin>", line 1, in <module>
    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 "<stdin>", line 1, in <module>
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'
    >>>


免責聲明!

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



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