了解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 27 Redis
浅谈Redis存储数据类型及存取值方法
May 08 Redis
redis 限制内存使用大小的实现
May 08 Redis
为Java项目添加Redis缓存的方法
May 18 Redis
Jedis操作Redis实现模拟验证码发送功能
Sep 25 Redis
详解Redis在SpringBoot工程中的综合应用
Oct 16 Redis
解决Redis启动警告问题
Feb 24 Redis
分布式架构Redis中有哪些数据结构及底层实现原理
Mar 13 Redis
Grafana可视化监控系统结合SpringBoot使用
Apr 19 Redis
Redis数据同步之redis shake的实现方法
Apr 21 Redis
Redis Lua脚本实现ip限流示例
Jul 15 Redis
Redis配置外网可访问(redis远程连接不上)的方法
Dec 24 Redis
压缩Redis里的字符串大对象操作
你真的了解redis为什么要提供pipeline功能
Redis缓存-序列化对象存储乱码问题的解决
比较几种Redis集群方案
解析Redis Cluster原理
解析高可用Redis服务架构分析与搭建方案
Redis基于Bitmap实现用户签到功能
You might like
php分页函数
2006/07/08 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
2010/04/28 PHP
PHP中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
php curl常用的5个经典例子
2017/01/20 PHP
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
Javascript字符串拼接小技巧(推荐)
2016/06/02 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
2016/06/24 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
深入理解node.js http模块
2018/01/24 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
JS实现时间校验的代码
2020/05/25 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
使用Python实现博客上进行自动翻页
2017/08/23 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
关于逃课的检讨书
2014/01/23 职场文书
三严三实学习心得体会
2014/10/13 职场文书
年底个人总结范文
2015/03/10 职场文书
音乐剧猫观后感
2015/06/04 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS
Python编写nmap扫描工具
2021/07/21 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript