了解Redis常见应用场景


Posted in Redis onJune 23, 2021
目录
  • 一、String 场景
  • 二、Hash 场景
  • 三、List 场景
  • 四、Set 场景
  • 五、zSet 场景

 

一、String 场景

计数功能:

  • 例如掘金文章点击数量,阅读数量。
  • 集群环境下的session共享。

 

二、Hash 场景

各种 商城购物车 (淘宝,京东。。)

设计思路:

1.购物车绑定了 userId

2.商品id作为feild,商品数量作为value。

模拟过程:

// 初始化购物车数据

hmset userId:1 prod:1 1 prod:2 3 prod:3 4

 

// 增加商品 prod:1 购买数量为2件时

hincrby userId:1  prod:1 1

 

// 减少商品 prod:2 数量为1件时

hincrby userId:1 prod:2 -2

 

// 删除商品 prod:1 时

hdel userId:1 prod:1

 

// 统计商品数

hlen userId:1

 

三、List 场景

微信公众号订阅消息

设计思路:

公众号发布消息时,向订阅本公众号的用户(mess:1)推送(将订阅消息id通过lpush放入用户的list中),模拟过程。

模拟过程:

// 推送消息

lpush mess:1 999

lpush mess:1 1000

lpush mess:1 1010

 

// 查看消息,返回结果1010 1000 999

lrange mess:1 0 -1

 

四、Set 场景

限时抽奖活动:例如微信有个活动,活动id为2,如何基于Redis设计实现。

设计思路:

用户点击立即参与后,将用户id保存到活动id的集合中,利用Set集合的元素唯一性可查看参加用户、参加用户数量等等。

模拟过程:

// 用户user:1 user:2 user:3参加抽奖活动act:888

sadd act:888 user:1 user:2 user:3

 

// 模拟一次性随机抽奖1名

srandmember act:888

 

// 模拟两次抽奖,两次抽奖不重复,使用spop命令,抽取中的用户会从set中移除

spop act:888

spop act:888

好友关系:共同关注,我关注的人也关注了他,我可能认识的人

注: 如果数据量大的情况下使用大数据分析

设计思路:两个集合取交集

模拟过程:

// 三个用户关注的人

sadd user:1 zhangsan lisi wangwu

sadd user:2 zhangsan liliu wanger wangwu

sadd user:3 list wangwu liliu

 

// user:1和user:2共同关注的人,取交集,返回zhangsan wangwu

sinter user:1 user:2

 

五、zSet 场景

各种榜单:

例如百度新闻排名

设计思路:

将新闻id作为member,点击次数设置为score,每点击一次score+1,当然,为了每日榜单,member在设计时可以加上后缀用于日期区分,例如news:20191216、news:20191217 。

模拟过程:

// 增加热点新闻

zadd topic:20191216 100 new:1 200 new:2 150 new:3 500 new:4

 

// new:1点击了120次,点击数变为220

zincrby topic:20191216 120 new:1

 

// 查看今日排行前3名,返回 new:4 500 new:1 220 new:2 200

zrevrange topic:20191216 0 2 withscores

 

zadd topic:20191217 110 new:1 200 new:2 150 new:3 100 new:4

zadd topic:20191218 110 new:5 200 new:2 150 new:6 100 new:7

// 合并三日的数据

zunionstore topic:3day 3 topic:20191216 topic:20191217 topic:201912168

// 查看近三日排行榜前三名,返回new:4 600 new:2 600 new:1 330

zrevrange topic:3day 0 2 withscores

以上就是了解Redis常见应用场景的详细内容,更多关于Redis常见应用场景的资料请关注三水点靠木其它相关文章!

Redis 相关文章推荐
Redis安装启动及常见数据类型
Apr 14 Redis
基于Redis过期事件实现订单超时取消
May 08 Redis
redis实现排行榜功能
May 24 Redis
Windows中Redis安装配置流程并实现远程访问功能
Jun 07 Redis
解析redis hash应用场景和常用命令
Aug 04 Redis
Redis集群新增、删除节点以及动态增加内存的方法
Sep 04 Redis
详解redis在微服务领域的贡献
Oct 16 Redis
Redis中缓存穿透/击穿/雪崩问题和解决方法
Dec 04 Redis
浅谈Redis跟MySQL的双写问题解决方案
Feb 24 Redis
源码分析Redis中 set 和 sorted set 的使用方法
Mar 22 Redis
redis复制有可能碰到的问题汇总
Apr 03 Redis
Redis Lua脚本实现ip限流示例
Jul 15 Redis
压缩Redis里的字符串大对象操作
你真的了解redis为什么要提供pipeline功能
Redis缓存-序列化对象存储乱码问题的解决
比较几种Redis集群方案
解析Redis Cluster原理
解析高可用Redis服务架构分析与搭建方案
Redis基于Bitmap实现用户签到功能
You might like
15种PHP Encoder的比较
2007/03/06 PHP
php中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
JavaScript编写页面半透明遮罩效果的简单示例
2016/05/09 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Linux下Python安装完成后使用pip命令的详细教程
2018/11/22 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
python set内置函数的具体使用
2019/07/02 Python
Python小程序 控制鼠标循环点击代码实例
2019/10/08 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
美国大型的健身社区和补充商店:Bodybuilding.com
2016/09/06 全球购物
德国机车企业:FC-Moto
2017/10/27 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python