字符串String的操作
redis中的String在内存中按照一个name对应一个value来存储。如图:
#1 set(name, value, ex=None, px=None, nx=False, xx=False)
在Redis中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(单位,秒)
px,过期时间(单位,毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行,即添加
xx,如果设置为True,则只有name存在时,岗前set操作才执行,即修改
#2 setnx(name, value)
设置值,只有name不存在时,执行设置操作(添加),效果同 set(name, value, nx=True)
#3 setex(name, value, time)
设置值,直接设置过期时间,效果同 set(name, value, ex=time)
参数:
time,过期时间(数字秒 或 timedelta对象)
#4 psetex(name, time_ms, value)
设置值,效果同setex
参数:
time_ms,过期时间(数字毫秒 或 timedelta对象)
#5 mset(*args, **kwargs)
批量设置值
如:
mset(k1='v1', k2='v2')
或
mset({'k1': 'v1', 'k2': 'v2'})
#6 get(name)
取值
#7 mget(keys, *args)
批量获取值
如:
r.mget('ylr', 'wupeiqi')
或
r.mget(['ylr', 'wupeiqi'])
#8 getset(name, value)
设置新值并返回原来的值
如
r.set('name', 'the3times')
old_name = r.getset('name', 'xliu') # old_name = b'the3times'
#9 getrange(key, start, end)
获取字符串值的一部分(根据字节获取),索引从0开始
参数:
name,Redis 的 name
start,起始位置(字节
end,结束位置(字节)
如:
r.set('name', 'the3times')
r.getrange('name', 1, 3) # b'he3'
#10 setrange(name, offset, value)
修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
参数:
offset,字符串的索引偏移量,字节(一个汉字三个字节)
value,要设置的值
如:
r.set('name', 'the3times')
r.setrange('name', 0, '---') 从索引为0的位置开始后的位置被'---'覆盖
print(r.get('name')) # b'---3times'
#11 strlen(name)
返回name对应值的字节长度(一个汉字3个字节)
#12 incr(self, name, amount=1)
# 注:同incrby
适用于是数字的字符串的加法,否则报错
自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
参数:
name, Redis的name
amount,自增数(必须是整数)
#13 incrbyfloat(self, name, amount=1.0)
自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
参数:
name,Redis的name
amount,自增数(浮点型)
如:
r.set('height', 1.75)
r.incrbyfloat('height', 0.1) # 1.85
#14 decr(self, name, amount=1)
自减 name对应的值,当name不存在时,则创建name=amount,否则,则自减。
参数:
name,Redis的name
amount,自减数(整数)
#15 append(key, value)
在redis name对应的值后拼接新的字符串
参数:
key, redis的name
value, 要追加的字符串
如:
r.set('name', 'the3times')
r.append('name', 'hello world')
print(r.get('name')) # b'the3timeshello world'