安装模块及配置
首先安装redis,在Ubuntu下输入指令pip install redis即可。下载完成后,cd到指定目录下,打开指定文件,如下图所示:
输入密码打开后,修改指定地方的内容,与上篇的操作MySQL雷同。
python连接redis及操作
redis与mysql不同,它没有账号和密码,也没有很多的databese和table,在Linux下进入redis可以发现它会显示ip地址和端口号,如下图:
故连接redis我们只需要ip地址和端口号就可以了。首先导包:
import redis
然后创建连接
re = redis.Redis(host = '127.0.0.1',port = '6379')
进行测试
re.set('name',15)
re.set('sex','男')
print(re.get('name').decode())
print(re.get('sex').decode('utf8'))
15
男
用python操作redis与redis本身命令没多大区别,下面介绍下不同于redis中的操作:
- 添加过期时间
re.expire('name',20)#有效时间是20秒
STRING 字符串的操作
1. r.set 设置值
set(name, value, ex=None, px=None, nx=False, xx=False)
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行,同setnx(name, value)
xx,如果设置为True,则只有name存在时,当前set操作才执行
2. mset 批量设置值
#批量设置值
r.mset(name1='zhangsan', name2='lisi')
#或
r.mget({"name1":'zhangsan', "name2":'lisi'})
3. mget(keys, *args) 批量获取
#批量获取
print(r.mget("name1","name2"))
#或
li=["name1","name2"]
print(r.mget(li))
4. getset 设置新值,打印原值
print(r.getset("name1","wangwu")) #输出:zhangsan
print(r.get("name1")) #输出:wangwu
5. getrange 根据字节获取子序列
r.set("name","zhangsan")
print(r.getrange("name",0,3))#输出:zhan
6. setrange 修改字符串内容,从指定字符串索引开始向后替换,如果新值太长时,则向后添加
r.set("name","zhangsan")
r.setrange("name",1,"z")
print(r.get("name")) #输出:zzangsan
r.setrange("name",6,"zzzzzzz")
print(r.get("name")) #输出:zzangszzzzzzz
7. strlen(name) 返回name对应值的字节长度
#返回name对应值的字节长度(一个汉字3个字节)
r.set("name","zhangsan")
print(r.strlen("name")) #输出:8
8.type 查看类型
r.type(name)
9、获取所有的key值
r.keys()
10、当前redis数据库中数据条数
r.dbsize()
11、删除指定的key-value值
r.set('score',100,3)
r.delete('score')
12、 清除redis里面的所有key-value
r.flushall()
Set 操作
1. sadd(name,values) 给name对应的集合中添加元素
#给name对应的集合中添加元素
r.sadd("set_name","aa")
r.sadd("set_name","aa","bb")
2. smembers(name) 获取name对应的集合的所有成员
#获取name对应的集合的所有成员
print(r.smembers('set_name'))
3. scard(name) 获取name对应的集合中的元素个数
#获取name对应的集合中的元素个数
r.scard("set_name")
4. sdiff(keys, args) 在第一个name对应的集合中且不在其他name对应的集合的元素集合
#在第一个name对应的集合中且不在其他name对应的集合的元素集合
r.sadd("set_name","aa","bb")
r.sadd("set_name1","bb","cc")
r.sadd("set_name2","bb","cc","dd")
print(r.sdiff("set_name","set_name1","set_name2"))#输出:{aa}
5. sinter(keys, *args) 获取多个name对应集合的并集
#获取多个name对应集合的并集
r.sadd("set_name","aa","bb")
r.sadd("set_name1","bb","cc")
r.sadd("set_name2","bb","cc","dd")
print(r.sinter("set_name","set_name1","set_name2"))#输出:{bb}
6.sismember 检查value是否是name对应的集合内的元素
#检查value是否是name对应的集合内的元素
sismember(name, value)
7. sunion(keys, *args) 获取多个name对应的集合的并集
#获取多个name对应的集合的并集
r.sunion("set_name","set_name1","set_name2")
8. sunionstore(dest,keys, *args) 获取多个name对应的集合的并集,并将结果保存到dest对应的集合中
9. srandmember(name, numbers) 从name对应的集合中随机获取numbers个元素
#从name对应的集合中随机获取numbers个元素
print(r.srandmember("set_name2",2))
10. srem(name, values) 删除name对应的集合中的某些值
#删除name对应的集合中的某些值
print(r.srem("set_name2","bb","dd"))