- 模块安装
pip install redis
- 使用流程
import redis
# 创建数据库连接对象
r = redis.Redis(host="127.0.0.1",port=6379,db=0,password="123456" )
- 代码示例
import redis
# 1 创建redis数据库连接对象
r = redis.Redis()
# 2 使用,很多命令的返回值是字节串,需要用字符串
# 表示时,调用decode方法.
# 3.1 通用命令...
print(r.keys("*"))
print(r.exists("name")) # 是否存在name这个键
#3.2字符串类型操作
r.set("name","xx",5)
print(r.get(“name))
r.mset({"a":100,"b":200,"c":300})
print(r.mget(["a","b","c"]))
#3.3列表类型操作
r.lpush("list",100,200,300)
print(r.lrange("list",0,-1))
Hash散列数据类型
- 定义
1.由field和关联的value组成的键值对
2.field的value是字符串类型
3.一个hash中最多包含2^32-1个键值对
- 优点
1.节约空间 特定条配下【1.字段小于512个,2.value不超过64字节】
2.按需获取字段的值
- 缺点
1.使用过期键功能:键过期功能只能对键进行过期操作,不能对散列的字段进行过期操作
2.存储消耗大于字符串结构
- python操作hash
# 1 更新一条数据的属性,没有则新建,hset(name, key, value)
r.hset("user","uname","xx")
# 2 读取这条数据的指定属性,返回字符串类型,hget(name, key)
r.hget("user","uname")
# 3 批量更新数据属性,没有则新建,参数为字典,hmset(name, mapping)
r.hmset("user",{"password":"123","E-":"123@"})
# 4 批量读取数据(没有则新建)属性,hmget(name, keys)
r.hmget("user", "uname","age")
# 5 获取这条数据的所有属性和对应的值,返回字典类型,hgetall(name)
r.hgetall("user")
# 6 获取这条数据的所有属性名,返回列表类型,hkeys(name)
r.hkeys("user")
# 7 删除这条数据的指定属性,hdel(name, *keys)
r.hdel("user","E-","phone")
- 应用场景
- 用户维度统计
统计数包括:关注数、粉丝数、喜欢商品数、发帖数
用户为key,不同维度为field,value为统计数
比如关注了5人
HSET user:10000 fans 5
HINCRBY user:10000 fans 1
集合数据类型(set)
- 特点
1、无序、去重
2、元素是字符串类型
3、最多包含2^32-1个元素
- python操作set,sortedset
import redis
r = redis.Redis()
# 有序集合类型的操作
r.zadd('pyzk1', {'tedu': 100, 'tedu2': 200})
print(r.zrange('pyzk1', 0, -1, withscores=True))
r.zadd('pyzk2', {'tedu2': 200, 'tedu3': 200})
# 并集运算
r.zunionstore('pyzk3',['pyzk1','pyzk2'], aggregate='sum')
print(r.zrange('pyzk3', 0, -1, withscores=True))
# 并集运算(带权重)
r.zunionstore('pyzk4',{'pyzk1':0.8,'pyzk2':0.2},
aggregate='sum')
print(r.zrange('pyzk4', 0, -1, withscores=True))