redis字符串操作
import redis
coon = redis.Redis(host='127.0.0.1',port=6379)
'''
连接本地redis
'''
set(name, value, ex=None, px=None, nx=False, xx=False)
name:类似于key
value:需要存入的值
ex:过期时间(秒)
px,过期时间(毫秒)
nx:如果设置为True,当数据库中key不存在时,可以将key-value添加数据库,其他不执行
xx:如果设置为True,当数据库中key存在时,可以将key-value添加数据库,与NX参数互斥,其他不执行
setnx(name, value)
只有在 key 不存在时 设置 key 的值
与set(name,value,nx=True)一样
psetex(name, time_ms, value) 以毫秒计时
conn.psetex('age',3000,'19')
'''
这条数据在3秒后自动删除
'''
mset(*args, **kwargs) 批量设置
coon.mset({'name':'春游去动物园','hobby':'唱,跳,Rap'})
'''
插入2条记录
'''
get(name) 获取值
res = coon.get('name')
print(res.decode(utf8))
print(str(res,encoding='utf-8'))
'''
中文都需要解码
'''
mget(keys, *args) 批量获取值
res = coon.mget('name','age')
res = coon.mget(['name','age'])
'''
中文都需要解码
'''
getset(name, value) 获取并设置值
res = coon.getset('name' ,'111')
print(res.decode(utf8)) # 春游去动物园
'''
返回原来的值,再将新的值替换掉原来的值
变成了:
{'name' : '111'}
'''
getrange(key, start, end)
res=conn.getrange('name',0,2)
print(str(res,encoding='utf-8'))
'''
根据起始位置,获取字符串,以字节为单位(字母,数字占一个字节,汉字占三个字节)
如果对一个汉字截取了一个字节或两个字节,会导致乱码
'''
setrange(name, offset, value) 指定位置设置值
conn.setrange('name',3,'bbb')
{’name' : '111'} -----> {'name' : '111bbb'}
'''
offset 以字节为单位(字母,数字占一个字节,汉字占三个字节)
'''
setbit(name, offset, value) 指定比特位修改成
conn.setbit('name',7,1)
'''
值用二进制表示为 00000000 00000000 00000000
执行后会把第7个0变成1
---> 00000010 00000000 00000000
'''
getbit(name, offset)
res = conn.getbit('name',7)
'''
返回二进制对应位置上的值
如值的二进制为 00000000
则返回0
'''
bitcount(key, start=None, end=None)
print(conn.bitcount('name',0,4))
'''
统计指定位区间上值为1的个数
如值二进制表示为 1101000
则返回结果为3
'''
strlen(name) 返回name对应值的字节长度
print(conn.strlen('name'))
'''
字母,数字占一个字节,汉字占三个字节
'''
incrby(self, name, amount=1) 计数器
conn.incrby('age')
'''
每执行一次,value加一,也可以指定amount,必须为整数,不能带小数点
'''
incrbyfloat(self, name, amount=1.0) 计数器
conn.incrbyfloat('age')
'''
每执行一次,value加1.0,也可以指定amount,必须为小数,必须带小数点
'''
decrby(self, name, amount=1) 自动减一
conn.decrby('age')
'''
每执行一次,减一,也可以指定amount
'''
append(key, value) value尾部追加
conn.append('name','sb')
'''
{'name' : '111'} ----> {'name' : '111sb'}
'''