redis api
目录
- redis api
- 连接redis
- KEY 相关API
- String相关API
- HASH相关API
- LIST相关API
- SET相关API
- SORTED SET相关API
- sortedset.zadd
- sortedset.zrange
- sortedset.zcard
- sortedset.zcount
- sortedset.zincreby
- sortedset.zinterstore
- sortedset.lexcount
- sortedset.zrangebylex || sortedset.zrangebyscore
- sortedset.zrank
- sortedset.zrem
- sortedset.zremrangebylex
- sortedset.zremrangebyrank
- sortedset.zremrangebyscore
- sortedset.zrevrangebyscore
- sortedset.zrevrange
- sortedset.zrevrank
- sortedset.zscore
- sortedset.zunionstore
!pip install redis
Requirement already satisfied: redis in d:\big_data\pycharmworkspace\venvspace\mostuse\lib\site-packages (3.5.3)
import redis
from PIL import Image
连接redis
pool = redis.ConnectionPool(host='', port=6379, decode_responses=True)
R = redis.StrictRedis(host='', port=6379, decode_responses=True ,db=0,password="admin")
KEY 相关API
key.set
R.set("xxx","111")
True
key.mset
R.mset({"a":"111","b":"222","c":"333"})
True
key.get
R.get("a")
'111'
key.mget
R.mget(["a","b","c"])
['111', '222', '333']
key.del
R.delete("xxx")
1
key.dump
R.set("redis","value")
R.dump("redis") #使用python的时候会有点编码问题
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-94-61b026991219> in <module>
1 R.set("redis","value")
----> 2 R.dump("redis")
D:\Big_data\PycharmWorkSpace\venvSpace\MostUse\lib\site-packages\redis\client.py in dump(self, name)
1575 If key does not exist a nil bulk reply is returned.
1576 """
-> 1577 return self.execute_command('DUMP', name)
1578
1579 def exists(self, *names):
D:\Big_data\PycharmWorkSpace\venvSpace\MostUse\lib\site-packages\redis\client.py in execute_command(self, *args, **options)
899 try:
900 conn.send_command(*args)
--> 901 return self.parse_response(conn, command_name, **options)
902 except (ConnectionError, TimeoutError) as e:
903 conn.disconnect()
D:\Big_data\PycharmWorkSpace\venvSpace\MostUse\lib\site-packages\redis\client.py in parse_response(self, connection, command_name, **options)
913 "Parses a response from the Redis server"
914 try:
--> 915 response = connection.read_response()
916 except ResponseError:
917 if EMPTY_RESPONSE in options:
D:\Big_data\PycharmWorkSpace\venvSpace\MostUse\lib\site-packages\redis\connection.py in read_response(self)
737 "Read the response from a previously sent command"
738 try:
--> 739 response = self._parser.read_response()
740 except socket.timeout:
741 self.disconnect()
D:\Big_data\PycharmWorkSpace\venvSpace\MostUse\lib\site-packages\redis\connection.py in read_response(self)
363 response = [self.read_response() for i in xrange(length)]
364 if isinstance(response, bytes):
--> 365 response = self.encoder.decode(response)
366 return response
367
D:\Big_data\PycharmWorkSpace\venvSpace\MostUse\lib\site-packages\redis\connection.py in decode(self, value, force)
129 value = value.tobytes()
130 if isinstance(value, bytes):
--> 131 value = value.decode(self.encoding, self.encoding_errors)
132 return value
133
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x90 in position 11: invalid start byte
key.exists
R.exists("redis")
1
R.exists("redis1")
0
key.expire
R.set("redis1","value1")
True
R.expire("redis1",10)
True
key.ttl
R.ttl("redis1")
4
if R.get("redis1"):
print(R.get("redis1"))
else:
print("Nil")
Nil
key.keys
R.keys("*")
['fruit', 'key2', 'num1', 'num2', 'fruit1', 'key1', 'redis']
key.persist
R.persist("num1")
False
R.expire("num1",100)
True
R.persist("num1")
True
R.ttl("num1")
-1
key.randomkey
R.randomkey()
'fruit1'
key.rename
R.get("fruit1")
'peer'
R.rename("fruit1","fruit2")
True
R.get("fruit1")
R.get("fruit2")
'peer'
key.renamenx
R.get("fruit1")
R.get("fruit2")
'peer'
R.renamenx("fruit2","fruit1")
True
R.get("fruit1")
'peer'
R.get("key1")
'value1'
R.renamenx("fruit1","key1")
False
key.type
R.type("redis")
'string'
key.rename
R.rename("a","aaa")
True
key.get
R.get("aaa")
'111'
key.expire
R.expire("aaa",100)
True
key.ttl
R.ttl("aaa")
97
String相关API
string.set
R.set("fruit","benana")
True
string.mset
R.mset({"aaa":"111","bbb":"222","ccc":"333"})
True
string.get
R.get("fruit")
'benana'
string.getrange
R.getrange("fruit",1,3)
'ena'
string.getset
R.getset("fruit","apple")
'benana'
R.get("fruit")
'apple'
string.offset
R.getbit("fruit",2) ## 对 key 所储存的字符串值,获取指定偏移量上的位(bit)
1
string.mget
R.set("brand","lining")
True
R.mget("fruit",'brand')
['apple', 'lining']
string.setbit
R.setbit("brand",1,1)
1
R.getbit("brand",1)
1
R.setbit("brand",1,0)
1
R.getbit("brand",1)
0
string.setex
R.setex("brand",30,"pike")
True
R.get("brand")
'pike'
R.ttl("brand")
29
R.ttl("brand")
26
if R.get("brand"):
print(R.get("brand"))
else:
print("Nil")
Nil
string.setnx
R.get("fruit")
'apple'
R.setnx("fruit","apple")
False
R.setnx("fruit1","peer")
True
string.setrange
R.setrange("fruit",1,"000")
5
R.get("fruit")
'a000e'
string.strlen
R.strlen("fruit")
5
string.mset
R.mset({"key1":"value1","key2":"value2"})
True
R.mget("key1","key2")
['value1', 'value2']
string.incr
R.set("num1",1)
True
R.incr("num1")
2
R.get("num1")
'2'
string.incrby
R.incrby("num1",10)
12
string.incrbyfloat
R.incrbyfloat("num1",1.1111)
13.1111
R.get("num1")
'13.1111'
string.decr
R.set("num2",2)
R.decr("num2")
1
string.decrby
R.decrby("num2",10)
-9
string.append
R.append("fruit","num1")
9
R.get("fruit")
'a000enum1'
HASH相关API
k = ["hashkey1","hashkey2","hashkey3","hashkey4","hashkey5"]
v = ['111','222','333','444','555']
hash.hdel || hash.hset || hash.hmset || hash.hmget || hash.hgetall
R.hmset("hmkey",dict(zip(k,v)))
D:\Big_data\PycharmWorkSpace\venvSpace\MostUse\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: Redis.hmset() is deprecated. Use Redis.hset() instead.
"""Entry point for launching an IPython kernel.
True
R.hgetall("hmkey")
{'hashkey1': '111',
'hashkey2': '222',
'hashkey3': '333',
'hashkey4': '444',
'hashkey5': '555'}
for i in range(0,5):
R.hset("hmkey1",k[i],v[i])
R.hgetall("hmkey1")
{'hashkey1': '111',
'hashkey2': '222',
'hashkey3': '333',
'hashkey4': '444',
'hashkey5': '555'}
R.hdel("hmkey1","hashkey1")
1
R.hgetall("hmkey1")
{'hashkey2': '222', 'hashkey3': '333', 'hashkey4': '444', 'hashkey5': '555'}
R.hmget("hmkey","hashkey2","hashkey3")
['222', '333']
hash.hexists
R.hexists("hmkey","hashkey1")
True
R.hexists("hmkey","hashkey6")
False
hash.hincrby || hash.hincrbyfloat
R.hincrby("hmkey","hashkey1")
112
R.hincrbyfloat("hmkey","hashkey1",1.1111)
113.1111
R.hget("hmkey","hashkey1")
'113.1111'
hash.hkeys || hash.hlen || hash.hvals
R.hkeys("hmkey")
['hashkey1', 'hashkey2', 'hashkey3', 'hashkey4', 'hashkey5']
R.hlen("hmkey")
5
R.hvals("hmkey")
['113.1111', '222', '333', '444', '555']
hash.hsetnx
R.hset("hmkey","hashkey1","111")
0
R.hset("hmkey","hashkey6","111")
1
R.hgetall("hmkey")
{'hashkey1': '111',
'hashkey2': '222',
'hashkey3': '333',
'hashkey4': '444',
'hashkey5': '555',
'hashkey6': '111'}
LIST相关API
key = "listkey"
value = ['123','456','789','apple','benana']
list.lrange
for i in value:
R.lpush(key,i)
R.lrange(key,0,-1)
['benana', 'apple', '789', '456', '123']
list.blpop || list.brpop
R.blpop(key)
('listkey', 'benana')
R.brpop(key)
('listkey', '123')
R.blpop(key)
('listkey', 'apple')
R.blpop(key)
('listkey', '789')
R.blpop(key)
('listkey', '456')
import time
a = time.time()
R.blpop(key,1) #无元素阻塞列表直到超时或者发现新元素
b = time.time()
print(b-a)
1.077794075012207
list.brpoplpush
for i in value:
R.lpush(key,i)
R.lrange(key,0,-1)
['benana', 'apple', '789', '456', '123', '123']
R.brpoplpush(key,"hashkey2")
'123'
R.lrange(key,0,-1)
['benana', 'apple', '789', '456', '123']
R.lrange("hashkey2",0,-1)
['123']
list.lindex
R.lindex(key,2)
'789'
list.linsert
R.lrange(key,0,-1)
['benana', 'apple', '789', '456', '123']
R.linsert(key,"BEFORE","456","000")
6
R.lrange(key,0,-1)
['benana', 'apple', '789', '000', '456', '123']
R.linsert(key,"AFTER","456","000")
7
R.lrange(key,0,-1)
['benana', 'apple', '789', '000', '456', '000', '123']
list.llen
R.llen(key)
7
list.lpop
R.lpop(key)
'benana'
R.lrange(key,0,-1)
['apple', '789', '000', '456', '000', '123']
list.lpush
R.lpush(key,"aa",'bb')
8
R.lrange(key,0,-1)
['bb', 'aa', 'apple', '789', '000', '456', '000', '123']
list.lpushx
R.lpushx(key,"xxx")
9
R.lrange(key,0,-1)
['xxx', 'bb', 'aa', 'apple', '789', '000', '456', '000', '123']
R.lpushx("1234","xxx")
0
list.lrem
R.lrem(key,1,"000")
1
R.lrange(key,0,-1)
['xxx', 'bb', 'aa', 'apple', '789', '456', '000', '123']
list.lset
R.lset(key,0,"000")
True
R.lrange(key,0,-1)
['000', 'bb', 'aa', 'apple', '789', '456', '000', '123']
list.ltrim
R.ltrim(key,2,5)
True
R.lrange(key,0,-1)
['aa', 'apple', '789', '456']
list.rpop
R.rpop(key)
'456'
R.lrange(key,0,-1)
['aa', 'apple', '789']
list.rpoplpush
R.rpoplpush(key,"hashkey2")
'789'
R.lrange("hashkey2",0,-1)
['789', '123']
list.lpush || list.rpush || list.rpushx
R.lpush(key,"asd")
3
R.rpush(key,"asd")
4
R.lrange(key,0,-1)
['asd', 'aa', 'apple', 'asd']
R.rpushx(key,"asd")
5
R.rpushx("1232","asd")
0
SET相关API
key = "setkey"
value = ['123','111','222','333']
set.sadd || set.smembers
for i in value:
R.sadd(key,i)
R.smembers(key)
{'111', '123', '222', '333'}
set.scard
R.scard(key)
4
set.sdiff
R.sadd("123","111",'222','333')
0
R.sdiff(key,"123")
set()
set.sdiffstore
R.sdiffstore("des","123",key)
3
set.sismember
R.sismember("des","111")
True
set.smove
R.smembers("123")
{'111', '222', '333'}
R.smembers(key)
set()
R.smove("123",key,"111")
True
R.smembers(key)
{'111'}
set.spop
R.spop(key)
'111'
R.smembers(key)
set()
set.srandmember
R.smembers("123")
{'222', '333'}
R.srandmember("123")
'333'
R.srandmember("123")
'333'
R.srandmember("123")
'222'
set.srem
R.srem("123","222")
1
R.smembers("123")
{'333'}
set.sunion
R.sadd("1","111",'222','333')
3
R.sadd("2","444",'555','666')
3
R.sunion("1","2")
{'111', '222', '333', '444', '555', '666'}
set.sunionstore
R.sadd("3","777",'888','999')
3
R.smembers("1")
{'111', '222', '333'}
R.smembers("2")
{'444', '555', '666'}
R.smembers("3")
{'777', '888', '999'}
R.sunionstore("4","1","2","3")
9
R.smembers("4")
{'111', '222', '333', '444', '555', '666', '777', '888', '999'}
SORTED SET相关API
key = "ss"
score = [1,3,2,4,5,6,7,8]
value = ['a','b','c','d','e','f','g']
sortedset.zadd
R.zadd(key,dict(zip(value,score)))
7
sortedset.zrange
R.zrange(key,0,-1,withscores=True)
[('a', 1.0),
('c', 2.0),
('b', 3.0),
('d', 4.0),
('e', 5.0),
('f', 6.0),
('g', 7.0)]
sortedset.zcard
R.zcard(key)
7
sortedset.zcount
R.zcount(key,2,5)
4
sortedset.zincreby
R.zincrby(key,10,"e")
15.0
R.zrange(key,0,-1,withscores=True)
[('a', 1.0),
('c', 2.0),
('b', 3.0),
('d', 4.0),
('f', 6.0),
('g', 7.0),
('e', 15.0)]
sortedset.zinterstore
R.zadd("sss",{"aa":10,"bb":20,"a":1})
3
R.zinterstore("1231",[key,"sss"])
1
R.zrange("1231",0,-1)
['a']
sortedset.lexcount
R.zrange(key,0,-1)
['a', 'c', 'b', 'd', 'f', 'g', 'e']
R.zlexcount(key,"[b",'[f')
4
R.zlexcount(key,"-","+")
7
sortedset.zrangebylex || sortedset.zrangebyscore
R.zrangebylex(key,"[b","[f")
['c', 'b', 'd', 'f']
R.zrangebyscore(key,5,20)
['f', 'g', 'e']
sortedset.zrank
R.zrank(key,"d")
3
sortedset.zrem
R.zrem(key,"a","b")
2
R.zrange(key,0,-1)
['c', 'd', 'f', 'g', 'e']
sortedset.zremrangebylex
R.zremrangebylex(key,"[d","[g")
4
R.zrange(key,0,-1)
['c']
sortedset.zremrangebyrank
R.zadd(key,dict(zip(value,score)))
6
R.zremrangebyrank(key,3,5)
3
R.zrange(key,0,-1)
['a', 'c', 'b', 'g']
sortedset.zremrangebyscore
R.zremrangebyscore(key,4,10)
1
R.zrange(key,0,-1,withscores=True)
[('a', 1.0), ('c', 2.0), ('b', 3.0)]
sortedset.zrevrangebyscore
R.zrevrangebyscore(key,3,2,withscores=True)
[('b', 3.0), ('c', 2.0)]
sortedset.zrevrange
R.zrevrange(key,1,2,withscores=True)
[('c', 2.0), ('a', 1.0)]
sortedset.zrevrank
R.zrevrank(key,"a")
2
sortedset.zscore
R.zscore(key,"a")
1.0
sortedset.zunionstore
R.zrange("ss",0,-1,withscores=True)
[('a', 1.0), ('c', 2.0), ('b', 3.0)]
R.zrange("sss",0,-1,withscores=True)
[('a', 1.0), ('aa', 10.0), ('bb', 20.0)]
R.zunionstore("ssss",["ss","sss"])
5
R.zrange("ssss",0,-1,withscores=True) ### 说明分数也会合并
[('a', 2.0), ('c', 2.0), ('b', 3.0), ('aa', 10.0), ('bb', 20.0)]