Redis使用场景讲解

一、Redis的5大数据类型简易图

在这里插入图片描述

二、String应用场景

  1. 单值存储
    SET key value
    GET key
    
  2. 对象缓存
    SET user:1 value (json 字符串)
    MSET user:1:name zhangsan  user:1:sex F
    MGET user:1:name  user:1:sex
    
  3. 对象缓存
    SETNX product:1 true   //返回1代表取所成功,0代表取锁失败‘
    ... 执行业务操作
    DEL product:1
    SET product:1 true ex 10 nx //防止意外终止导致死锁
    
  4. 计数器
    INCR aritcle:readCount:{id} 
    GET aritcle:readCount:{id} 
    
  5. Web集群Session共享
    Spring session + redis 试下session共享
    
  6. 分布式系统全局序列号
    INCRBY orderId 1000 //redis 批量生成序列号提升性能
    

三、Hash应用场景

3.1 常用操作在这里插入图片描述
3.2 应用场景

对象缓存

 //HSET 单个设置, HMSET 批量设置
HMSET user {userId}:name zhangsan {userId}:sex F
HMGET user 1:name 1:sex

Hash 购物车场景:
在这里插入图片描述

3.3 优缺点

优点

  1. 同类数据归类整合存储,方便数据管理
  2. 相比string操作消耗内存与CPU更小
  3. 相比string存储更节省空间

缺点

  1. 过期功能不能使用在field上,只能用在key上
  2. Redis集群架构下不适合大规模使用

四、 List应用场景

4.1 常用操作

在这里插入图片描述

4.2 常用数据

在这里插入图片描述

4.3 使用场景
  1. 微博消息和微信公众号消息

张三关注了李四,王五等大V

//1) 李四发微博,消息ID为10001
LPUSH msg:{张三-ID} 10001
//2) 王五发微博,消息ID为10002
LPUSH msg:{张三-ID} 10002
//3) 查看最新微博消息
LRANGE msg:{张三-ID} 0 5

五、 Set

5.1 Set结构在这里插入图片描述
5.1 Set应用场景
  1. 微信抽奖小程序
    在这里插入图片描述
// 1) 点击参与抽奖的人加入集合
SADD key {userId}
// 2)查看参与抽奖的所有用户
SMEMBERS key
// 3) 抽取count名中奖者 SRANDMEMBER(不剔除获奖者)/SPOP (会提出获奖者,比如一等奖 ,二等奖)
SRANDMEMBER key [count]/SPOP key [count]
  1. 微信微博点赞,收藏,标签
// 1) 点赞
SADD like:{消息ID} {用户ID}
// 2) 取消点赞
SREM like:{消息ID} {用户ID}
// 3)检查用户是否点过赞
SISMEMBER like:{消息ID} {用户ID}
// 4)获取点赞的用户列表
SMEMBERS like:{消息ID}
// 5)获取点赞用户
SCARD like:{消息ID}
  1. 互联网的关注模型
    在这里插入图片描述
// 1)我关注的人:payneSet -> {成龙,李连杰}
// 2)周润发关注的人:zhouSet -> {成龙,zhourunfa}
// 3)李连杰关注的人:liSet -> {周润发,任达华}
// 4)成龙关注的人:clSet -> {周星驰,任达华}
// 5)我和周润发共同关注的人:--> {成龙}
SINTER payneSet zhouSet 
// 6)我关注的人也关注了周润发
SISMEMBER clSet 周润发
SISMEMBER liSet 周润发
// 7)我可能认识的人:->{任达华}
SDIFF clSet liSet
  1. 结合操作实现电商筛选
    在这里插入图片描述

六、zset应用场景

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值