redis api

redis api

!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)]
posted @ 2021-12-06 14:32  -拂石-  阅读(63)  评论(0编辑  收藏  举报