Redis.py客户端的命令总结【一】
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'