redis系列之–数据结构设计
redis数据结构和常用操作
-
String -->语法格式:key value 可理解为{key:value}
- 记录字符串/整数/浮点数
- 命令
- set 添加/修改数据
- get 获取数据
- mset 添加多个数据
- mget 获取多个数据
- incr 计数加1
- decr 计数减1
- incrby 计数加n
-
键命令
- 适用于所有的类型
- 命令
- del 删除数据
- exists 判断数据是否存在
- expire 设置过期时间
- ttl 获取剩余时间
- keys 查询满足条件的键
-
hash -->语法格式:key field1 value1 field2 value2 … 可理解为可以key:{ field1: value1, field2 :value2 …}
- 类似
字典
的结构 - 命令
- hset 添加字段
- hget 获取字段
- hmset 添加多个字段
- hmget 获取多个字段
- hdel 删除字段
- 类似
-
list -->语法格式:key value1 [value2, …] 可理解为key:[value1, value2, …]
- 是一个
双向链表
- 命令
- lpush 从左侧追加元素
- lrange 从左侧遍历元素
- rpush 从右侧追加元素
- lset 从左侧修改元素
- lpop 从左侧删除元素
- rpop 从右侧删除元素
- ltrim 裁切列表
- 是一个
-
zset -->语法格式:key score member [score member …] 可理解为key:{member1:score1, member2:score2, …}
有序
集合, 按照分数(score)进行排序- 命令
- zadd 添加/修改元素
- zrange 遍历元素(按分数从小到大)
- zrevrange 反向遍历元素(从大到小)
- zrangebyscore 遍历指定分数范围的元素
- zscore 查询元素的分数
- zrem 删除元素
- zincrby 元素的分数计数加n
-
set -->语法格式:key member [member … 可理解为key:[member1, member2, …]
-
无序
集合 无序+去重 -
命令
- sadd 添加元素
- smembers 遍历元素
- sismember 判断是否包含
- srem 删除元素
-
数据结构设计案例
新闻页面
- 记录某条新闻的详细数据 hash
- 记录新闻id string
- 记录最新的100条新闻 list
- 记录所有的新闻及点赞数 zset
- 记录对某条新闻点赞的用户 set
from redis import Redis
# 创建redis客户端
# redis-py 3.0 之前需要使用 StrictRedis() 来建立数据库连接对象
# redis_client = StrictRedis(host='127.0.0.1', port=6379, db=0, decode_responses=True)
redis_client = Redis(decode_responses=True)
def release_news(title, content):
"""
发布新闻
:param title: 新闻标题