Python 操作redis
本篇博客详细介绍python操作redis,python的连接方式: 点击 下面介绍详细使用
string 操作
set(key, value, ex=None, px=None, nx=False, xx=False)
1 2 3 4 5 6 7 8 9
| r.set('name','lightfish') ''' 参数 set(key, value, ex=None, px=None, nx=False, xx=False) ex, 过期时间 秒 px,过期时间 毫秒 nx, 设置为True,则只有key不存在时才执行,同setnx(key, value) xx,设置为True,则只有key存在时执行 '''
|
setex(key, time, value) psetex(key, time_ms, value)
1 2 3
| setex(key, time, value) # 设置过期时间 秒
psetex(key, time_ms, value) # 设置过期时间 毫秒 ms
|
记得要先设置时间,看源码就知道为什么了,这其实就是相当于自执行redis语句,只是封装了一下

mset({key1: value1, key2,value2}) 批量设置值
1
| r.mset({'name1':'lightfish', 'name2':'qgtiger'})
|
get(key) 获取值 maget(*key)批量获取
1 2 3 4 5 6
| r.get('name')
r.mget('name1','name2') 或者 li = ['name1','name2'] print(r.mget(li))
|
getset(key, value) 设置新值,输入原值
1 2
| print(r.getset('name1','lightfisher')) #输出 lightfish print(r.get('name1')) #输出lightfisher
|
getrange(key, start, end)
1 2
| r.set('name','lightfish') r.getrange('name',0,4) #输出light
|
setrange(key, offset value) #从指定位置开始向后替换
1 2 3 4 5
| r.set('name', 'lightfish') r.setrange('name', 1, 'z') print(r.get('name')) #输出 lzghtfish r.setrange('name', 5, 'house') print(r.get('name')) # 输出 lzghthouse
|
setbit(key, offset, value)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 对二进制表示位进行操作 ''' key: redis的键 offset: 位的索引,(将值对应的ASCII码转变成二进制后在进行索引) value: 值只能是1,0 因为是修改二进制 '''
str = '345' r.set('name', str) for i in str: print(i, ord(i), bin(ord(i))) #输出值、ASCII码,对应转换的二进制 ''' 输出: 3 51 0b110011 4 52 0b110100 5 53 0b110101 '''
r.setbit('name', 6, 0) #把第六位(0开始)转变为0,也就是上述的3对应转变为0b110001 print(r.get('name')) #输出 145
|
getbit(key, offset)
1 2 3
| 获取key对应valueASCII码的二进制中的某位 r.set('name',3) #对应二进制0b110011 print(r.getbit('name',5)) #输出 0
|
strlen(key) 输出对应value的长度
1 2
| r.set('name', 'lightfish') print(r.strlen('name')) #输出9
|
incr(self, key, amount=1)
1 2 3 4 5 6
| #自增mount对应的值,当mount不存在时,则创建mount=amount,否则,则自增,amount为自增数(整数) print(r.incr("mount",amount=2))#输出:2 print(r.incr("mount"))#输出:3 print(r.incr("mount",amount=3))#输出:6 print(r.incr("mount",amount=6))#输出:12 print(r.get("mount")) #输出:12
|
incrbyfloat(self, key, amount=1.0)
1
| #类似 incr() 自增,amount为自增数(浮点数)
|
decr(self, key, amount=1)
1
| #自减name对应的值,当name不存在时,则创建name=amount,否则,则自减,amount为自增数(整数)
|
append(key, value)
1 2 3 4
| r.set("name","light") print(r.get("name")) #输出:light r.append("name","fish") print(r.get("name")) #输出:lightfish
|
hash 操作
redis中的Hash 在内存中类似于一个name对应一个dic来存储
hset(name, key, value)
1 2
| #name对应的hash中设置一个键值对(不存在,则创建,否则,修改) r.hset("dic_name","a1","aa")
|
hget(name,key)
1 2 3
| r.hset("dic_name","a1","aa") #在name对应的hash中根据key获取value print(r.hget("dic_name","a1"))#输出:aa
|
hgetall(name)
1 2
| #获取name对应hash的所有键值 print(r.hgetall("dic_name")) #输出 {b'a1': b'aa'}
|
hmset(name, mapping)
1 2 3 4
| #在name对应的hash中批量设置键值对,mapping:字典 dic={"a1":"aa","b1":"bb"} r.hmset("dic_name",dic) print(r.hget("dic_name","b1"))#输出:bb
|
hmget(name, keys, *args)
1 2 3 4
| # 在name对应的hash中获取多个key的值 li=["a1","b1"] print(r.hmget("dic_name",li)) print(r.hmget("dic_name","a1","b1"))
|
hlen(name)、hkeys(name)、hvals(name)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| dic={"a1":"aa","b1":"bb"} r.hmset("dic_name",dic)
#hlen(name) 获取hash中键值对的个数 print(r.hlen("dic_name"))
#hkeys(name) 获取hash中所有的key的值 print(r.hkeys("dic_name"))
#hvals(name) 获取hash中所有的value的值 print(r.hvals("dic_name"))
''' Output: 2 [b'a1', b'b1'] [b'aa', b'bb'] '''
|
hexists(name, key)
1 2
| #检查name对应的hash是否存在当前传入的key print(r.hexists("dic_name","a1"))#输出:True
|
hdel(name,*keys)
1 2
| #删除指定name对应的key所在的键值对 r.hdel("dic_name","a1")
|
hincrby(name, key, amount=1)
1 2
| #自增hash中key对应的值,不存在则创建key=amount(amount为整数) print(r.hincrby("demo","a",amount=2))
|
hincrbyfloat(name, key, amount=1.0)
1
| #自增hash中key对应的值,不存在则创建key=amount(amount为浮点数)
|
list 操作
redis中的List在在内存中按照一个name对应一个List来存储
lpush(name,values)
1 2 3
| # 在name对应的list中添加元素,每个新的元素都添加到列表的最左边 r.lpush("list_name",2) r.lpush("list_name",3,4,5)#保存在列表中的顺序为5,4,3,2
|
rpush(name,values)
1
| #同lpush,但每个新的元素都添加到列表的最右边
|
lpushx(name,value)
1
| #在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边
|
rpushx(name, value)
1
| #在name对应的list中添加元素,只有name已经存在时,值添加到列表的最右边
|
llen(name)
1 2
| # name对应的list元素的个数 print(r.llen("list_name"))
|
linsert(name, where, refvalue, value))
1 2 3 4 5 6 7 8
| # 在name对应的列表的某一个值前或后插入一个新值 r.linsert("list_name","BEFORE","2","SS")#在列表内找到第一个元素2,在它前面插入SS
'''参数: name: redis的name where: BEFORE(前)或AFTER(后) refvalue: 列表内的值 value: 要插入的数据'''
|
r.lset(name, index, value)
1 2
| #对list中的某一个索引位置重新赋值 r.lset("list_name",0,"bbb")
|
r.lrem(name, value, num)
1 2 3 4 5 6 7 8 9
| #删除name对应的list中的指定值 r.lrem("list_name","SS",num=0)
''' 参数: name: redis的name value: 要删除的值 num: num=0 删除列表中所有的指定值; num=2 从前到后,删除2个; num=-2 从后向前,删除2个'''
|
lpop(name)
1 2
| #移除列表的左侧第一个元素,返回值则是第一个元素 print(r.lpop("list_name"))
|
lindex(name, index)
1 2
| #根据索引获取列表内元素 print(r.lindex("list_name",1))
|
lrange(name, start, end)
1 2
| #分片获取元素 print(r.lrange("list_name",0,-1))
|
ltrim(name, start, end)
1 2
| #移除列表内没有在该索引之内的值 r.ltrim("list_name",0,2)
|
Just have fun