- 模块安装
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")
- 应用场景
集合数据类型(set)
- 用户维度统计
统计数包括:关注数、粉丝数、喜欢商品数、发帖数
用户为key,不同维度为field,value为统计数
比如关注了5人
HSET user:10000 fans 5
HINCRBY user:10000 fans 1
- 特点
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))