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)]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值