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)

in
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  -拂石-  阅读(109)  评论(0)    收藏  举报