- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?
?
redis系列之--数据结构设计
?
?
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=, port=6379, db=0, decode_responses=True)
redis_client = Redis(decode_responses=True)
def release_news(title, content):
发布新闻
:param title: 新闻标题
:param content: 新闻内容
# 生成新闻id
news_id = redis_client.incr(news_id) # incr返回的是当前的计数, 类型为整型
news_key = news: + str(news_id)
# 记录新闻数据到hash中
redis_client.hmset(news_key, {
title: title,
content: content
})
# 设置缓存(过期)时间 7天
redis_client.expire(news_key, 7 * 86400)
# 将新闻保存到最新发布列表中
redis_client.lpush(latest_news_list, news_key)
# 裁切发布列表 只保留100条新闻
redis_client.ltrim(latest_news_list, 0, 99)
# 将新闻保存到新闻有序集合中
redis_client.zadd(news_zset, {news_key: 0})
def show_latest_news():
获取最新的30条新闻
return redis_client.lrange(latest_news_list, 0, 29)
def show_fav_news():
获取30条最受欢
您可能关注的文档
- Python网络程序设计教学要点与案例分享.docx
- python网络通信器设计.docx
- Python计算生态概览.docx
- Python设计模式面向对象编程.docx
- Python语言程序设计-学习笔记和练习.docx
- Python语言程序设计-学习笔记和课后练习.docx
- Python语言程序设计-文件和数据格式化.docx
- Python语言程序设计基础.docx
- Python课程设计爬虫篇.docx
- QT学习1:设计可视化窗口的框架-Ui-Class.docx
- 《JJF 2132-2024荧光紫外灯人工气候老化试验装置校准规范:辐射照度参数》.pdf
- JJF 2120-2024轮速传感器校准规范.pdf
- 计量规程规范 JJF 2120-2024轮速传感器校准规范.pdf
- 《JJF 2129-2024钙钛矿太阳电池校准规范:光电性能参数》.pdf
- JJF 2129-2024钙钛矿太阳电池校准规范:光电性能参数.pdf
- 《JJF 2120-2024轮速传感器校准规范》.pdf
- JJF 2117-2024沥青混合料理论最大相对密度仪校准规范.pdf
- JJF 2116-2024特定蛋白分析仪校准规范.pdf
- 《JJF 2116-2024特定蛋白分析仪校准规范》.pdf
- 计量规程规范 JJF 2117-2024沥青混合料理论最大相对密度仪校准规范.pdf
文档评论(0)