Redis使用场景讲解

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

Redis使用场景讲解_第1张图片

二、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 常用数据

Redis使用场景讲解_第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. 微信抽奖小程序
    Redis使用场景讲解_第3张图片
// 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. 互联网的关注模型
    Redis使用场景讲解_第4张图片
// 1)我关注的人:payneSet -> {成龙,李连杰}
// 2)周润发关注的人:zhouSet -> {成龙,zhourunfa}
// 3)李连杰关注的人:liSet -> {周润发,任达华}
// 4)成龙关注的人:clSet -> {周星驰,任达华}
// 5)我和周润发共同关注的人:--> {成龙}
SINTER payneSet zhouSet 
// 6)我关注的人也关注了周润发
SISMEMBER clSet 周润发
SISMEMBER liSet 周润发
// 7)我可能认识的人:->{任达华}
SDIFF clSet liSet
  1. 结合操作实现电商筛选

六、zset应用场景

你可能感兴趣的:(数据库,redis)