了解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 相关文章推荐
Java Socket实现Redis客户端的详细说明
May 26 Redis
Redis缓存-序列化对象存储乱码问题的解决
Jun 21 Redis
k8s部署redis cluster集群的实现
Jun 24 Redis
Redis Stream类型的使用详解
Nov 11 Redis
聊聊redis-dump工具安装问题
Jan 18 Redis
浅谈Redis跟MySQL的双写问题解决方案
Feb 24 Redis
面试分析分布式架构Redis热点key大Value解决方案
Mar 13 Redis
浅谈Redis 中的过期删除策略和内存淘汰机制
Apr 03 Redis
Redis 限流器
May 15 Redis
Redis 报错 error:NOAUTH Authentication required
May 15 Redis
Redis实现订单过期删除的方法步骤
Jun 05 Redis
压缩Redis里的字符串大对象操作
你真的了解redis为什么要提供pipeline功能
Redis缓存-序列化对象存储乱码问题的解决
比较几种Redis集群方案
解析Redis Cluster原理
解析高可用Redis服务架构分析与搭建方案
Redis基于Bitmap实现用户签到功能
You might like
php学习之 数组声明
2011/06/09 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
JQUERY 设置SELECT选中项代码
2014/02/07 Javascript
jQuery级联操作绑定事件实例
2014/09/02 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
原生js实现下拉框功能(支持键盘事件)
2017/01/13 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
2018/09/06 jQuery
layer弹出子iframe层父子页面传值的实现方法
2018/11/22 Javascript
Vue基础配置讲解
2019/11/29 Javascript
[46:20]TFT vs Secret Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python解决字典中的值是列表问题的方法
2013/03/04 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
机械制造与自动化应届生求职信
2013/11/16 职场文书
护士的自我鉴定
2014/02/07 职场文书
感恩教育活动总结
2014/05/05 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
MySQL表的增删改查基础教程
2021/04/07 MySQL
Python内置数据类型中的集合详解
2022/03/18 Python