了解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通过6379端口无法连接服务器(redis-server.exe闪退)
May 08 Redis
Redis可视化客户端小结
Jun 10 Redis
Redis Cluster 集群搭建你会吗
Aug 04 Redis
CentOS8.4安装Redis6.2.6的详细过程
Nov 20 Redis
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
Feb 12 Redis
解决linux下redis数据库overcommit_memory问题
Feb 24 Redis
Redis 操作多个数据库的配置的方法实现
Mar 23 Redis
Redis特殊数据类型HyperLogLog基数统计算法讲解
Jun 01 Redis
Redis基本数据类型List常用操作命令
Jun 01 Redis
Redis sentinel哨兵集群的实现步骤
Jul 15 Redis
压缩Redis里的字符串大对象操作
你真的了解redis为什么要提供pipeline功能
Redis缓存-序列化对象存储乱码问题的解决
比较几种Redis集群方案
解析Redis Cluster原理
解析高可用Redis服务架构分析与搭建方案
Redis基于Bitmap实现用户签到功能
You might like
不错的一篇面向对象的PHP开发模式(简写版)
2007/03/15 PHP
PHP代码优化技巧小结
2015/09/29 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
Maps Javascript
2007/01/22 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
理解JavaScript原型链
2016/10/25 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
JS实现li标签的删除
2019/04/12 Javascript
Vue移动端右滑屏幕返回上一页附源码下载
2019/06/26 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
[01:14]2014DOTA2展望TI 剑指西雅图newbee战队专访
2014/06/30 DOTA
python中的内置函数getattr()介绍及示例
2014/07/20 Python
详解Python中的条件判断语句
2015/05/14 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
python的unittest测试类代码实例
2017/12/07 Python
Django 实现下载文件功能的示例
2018/03/06 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
Django框架多表查询实例分析
2018/07/04 Python
python函数的万能参数传参详解
2019/07/26 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
python实现同一局域网下传输图片
2020/03/20 Python
python利用faker库批量生成测试数据
2020/10/15 Python
乡镇三项教育实施方案
2014/03/30 职场文书
写给导师的自荐信
2015/03/06 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
小学2016年“我们的节日·重阳节”活动总结
2016/04/01 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript