Redis学习〖二〗Redis实战场景大全

Tip:Redis的数据类型模型

在这里插入图片描述

一.String实战场景

1. 对象缓存

在这里插入图片描述

  • 使用set 存一个对象的值,不如把他拆分开来比如: KEY->user:1(id):name(字段) Value->kaikai 这样我们取出值比较方便且不用json序列化回去.

2. 分布式锁

简单的分布式锁实现
在这里插入图片描述
由于之前写过一点分布式锁的用法,这里简单提一下,想要了解的可以点下方链接
之前写过的分布式锁链接

3. 计数器

在这里插入图片描述

  • 比如文章的阅读数量等等 例如用 incr article:readcount:1002来实现文章的计数器
  • 用get article:readcount:{文章id}获取文章的阅读数

4.分布式系统全局序列号

由于Redis是单线程的,如果用每增加一个序列号就incr一下,等到并发量一旦大起来可能就会出错,比如我们现在有三个web应用,我们可以一次分配1000个序列给它,让它慢慢来用,等到用完后继续给他1000个,这样就比一条一条给性能好得多,拿给1000个就比如计数器记了1000个就用到了 INCRBY orderId 1000 这条命令

二.Hash实战场景

Tip: Hash基本命令

在这里插入图片描述

1. 对象缓存

在这里插入图片描述

  • 对象缓存除了用String,也可以用Hash
  • 批量设置: hmset user 1:name kaikai 1:balance 1888 1:phone 111111111
  • 批量取值: hmget user 1:name 1:balance

存进去的值

在这里插入图片描述

2.电商购物车

在这里插入图片描述

  • 加入购物车实现: 以 hset cart:{用户ID} {商品ID} 数量 ,为格式设置进去
  • 购物车单个商品数量实现: hincrby cart:{用户ID} {商品ID} 数量 ,可以设置数量的增加.
  • 购物车总数量实现: hlen cart:{用户ID},获取总的数量,返回相同filed的总数量
  • 购物车商品删除实现: hdel cart:{用户ID},删除某个key的值
  • 获取到购物车中所有商品的ID: hkeys cart:{用户ID}

三.List结构

Tip:List基本命令

在这里插入图片描述

1.实现数据结构

在这里插入图片描述

  • 栈,先进后出,redis实现栈只需从同一边PUSH+POP命令即可
  • 队列,先进先出,调用LPUSH+RPOP或RPUSH+LPOP可实现队列

2.阻塞队列

在这里插入图片描述
客户端实现监听模式,只要有值进队,立马拿到这个值

3.消息流

在这里插入图片描述

  • 实现公众号发消息给关注他的人: 加入消息ID为1001,只要公众号发消息后,立马后台开启一个定时任务,一直给关注他的人的队列里面放这个消息ID,例如LPUSH msg:{用户ID} {消息ID},这样信息就直接加到用户list里面
  • 页面获取消息,当我们一打开页面肯定是一些消息按时间顺序推送给我们的,那么最新的肯定是队列开头的值,这里用到了LRANG msg:{用户ID} 0 {要取到的消息下标},比如取5条就是 0 5,

四.Set集合

Tip: Set基本命令

在这里插入图片描述

1.抽奖

在这里插入图片描述

  • 实现参与抽奖功能: SADD activity:{活动ID} {参与用户ID}
  • 获取所有的参与人, 就是查看当前集合key的集合元素有哪些: SMEMBERS activity:{活动ID}
  • 实现开奖,从集合中抽几个人中奖(不删除): SRANDMEMBER activity:{活动ID} 中奖人数
  • 实现开奖,从集合中抽几个人中奖(删除),比如要抽123等奖,一等奖就不能抽二等奖需要删除: SPOP activity:{活动ID} 中奖人数

2.点赞收藏标签实现

在这里插入图片描述

3.集合操作

实现集合中的并,交,差集运算
在这里插入图片描述

4.微博关注模型

在这里插入图片描述

五.有序集合ZSet

Tip: 有序集合操作

在这里插入图片描述

1.实现微博热搜

在这里插入图片描述

以上为我之前学习课程的一些总结,现在拿出来给大家分享,制作不易,转载请标注.

发布了69 篇原创文章 · 获赞 54 · 访问量 9571

猜你喜欢

转载自blog.csdn.net/kingtok/article/details/103446956