了解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 24 Redis
为Java项目添加Redis缓存的方法
May 18 Redis
redis哨兵常用命令和监控示例详解
May 27 Redis
SpringBoot 集成Redis 过程
Jun 02 Redis
解析Redis Cluster原理
Jun 21 Redis
redis requires ruby version2.2.2的解决方案
Jul 15 Redis
Redis Cluster集群动态扩容的实现
Jul 15 Redis
缓存替换策略及应用(以Redis、InnoDB为例)
Jul 25 Redis
基于Redis的List实现特价商品列表功能
Aug 30 Redis
Jedis操作Redis实现模拟验证码发送功能
Sep 25 Redis
Redis特殊数据类型HyperLogLog基数统计算法讲解
Jun 01 Redis
Redis sentinel哨兵集群的实现步骤
Jul 15 Redis
压缩Redis里的字符串大对象操作
你真的了解redis为什么要提供pipeline功能
Redis缓存-序列化对象存储乱码问题的解决
比较几种Redis集群方案
解析Redis Cluster原理
解析高可用Redis服务架构分析与搭建方案
Redis基于Bitmap实现用户签到功能
You might like
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
帝国cms常用标签汇总
2015/07/06 PHP
php数组和链表的区别总结
2019/09/20 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
javascript常用方法汇总
2014/12/02 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
jQuery 添加样式属性的优先级别方法(推荐)
2017/06/08 jQuery
node+multer实现图片上传的示例代码
2020/02/18 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
Python中获取对象信息的方法
2015/04/27 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
python与php实现分割文件代码
2017/03/06 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
教育科研先进个人材料
2014/01/26 职场文书
机关党员进社区活动总结
2014/07/05 职场文书
农村党建工作汇报材料
2014/10/27 职场文书
会计师事务所实习证明
2014/11/16 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
Golang获取List列表元素的四种方式
2022/04/20 Golang