redis各种数据类型的应用场景

String应用场景
单值缓存

        SET  key  value      GET  key     

对象缓存
  1. SET  user:1  value(json格式数据)
  2. MSET  user:1:name  zhuge   user:1:balance  1888    
  3. MGET  user:1:name   user:1:balance
分布式锁
  1.      SETNX  product:10001  true         //返回1代表获取锁成功
  2.      SETNX  product:10001  true         //返回0代表获取锁失败
  3.      。。。执行业务操作
  4.      DEL  product:10001            //执行完业务释放锁
  5.      SET product:10001 true  ex  10  nx    //防止程序意外终止导致死锁
计数器
  1.         INCR article:readcount:{文章id}      
  2.         GET article:readcount:{文章id}
  3.         Web集群session共享 spring session + redis实现session共享
  4.         分布式系统全局序列号     INCRBY  orderId  1000        //redis批量生成序列号提升性能

Hash应用场景
对象缓存
  • HMSET  user  {userId}:name  zhuge  {userId}:balance  1888
  • HMSET  user  1:name  zhuge  1:balance  1888
  • HMGET  user  1:name  1:balance  

电商购物车
  1. 以用户id为key
  2. 商品id为field
  3. 商品数量为value

购物车操作

  • 添加商品hset cart:1001 10088 1
  • 增加数量hincrby cart:1001 10088 1
  • 商品总数hlen cart:1001
  • 删除商品hdel cart:1001 10088
  • 获取购物车所有商品hgetall cart:1001
List应用场景

常用数据结构
  • Stack(栈) = LPUSH + LPOP
  • Queue(队列)= LPUSH + RPOP Blocking
  • MQ(阻塞队列)= LPUSH + BRPOP
微博和微信公号消息流

微博消息和微信公号消息

关注了MacTalk,备胎说车等大V

  • MacTalk发微博,消息ID为10018 LPUSH  msg:{诸葛老师-ID}  10018
  • 备胎说车发微博,消息ID为10086 LPUSH  msg:{诸葛老师-ID} 10086
  • 查看最新微博消息 LRANGE  msg:{诸葛老师-ID}  0  4

Set应用场景
微信抽奖小程序
  1. 点击参与抽奖加入集合 SADD key {userlD}
  2. 查看参与抽奖所有用户 SMEMBERS key      
  3. 抽取count名中奖者 SRANDMEMBER key [count] / SPOP key [count] 「备注:spop会把中奖用户删除,适用于得了二等奖就不能得一等奖的场景」

集合操作

交集:SINTER set1 set2 set3  { c }

并集:SUNION set1 set2 set3  { a,b,c,d,e }

差集:SDIFF set1 set2 set3  { a } 「备注:set1和(set2 and set3和)得差集」

微信微博点赞,收藏,标签
  1. 点赞 SADD  like:{消息ID}  {用户ID}
  2. 取消点赞 SREM like:{消息ID}  {用户ID}
  3. 检查用户是否点过赞 SISMEMBER  like:{消息ID}  {用户ID}
  4. 获取点赞的用户列表 SMEMBERS like:{消息ID}
  5. 获取点赞用户数 SCARD like:{消息ID}

集合操作实现微博微信关注模型
  1. 诸葛老师关注的人: zhugeSet-> {guojia, xushu}
  2. 杨过老师关注的人:  yangguoSet--> {zhuge, baiqi, guojia, xushu}
  3. 郭嘉老师关注的人: guojiaSet-> {zhuge, yangguo, baiqi, xushu, xunyu)
  4. 我和杨过老师共同关注: SINTER zhugeSet yangguoSet--> {guojia, xushu}
  5. 我关注的人也关注他(杨过老师): SISMEMBER guojiaSet yangguo SISMEMBER xushuSet yangguo
  6. 我可能认识的人: SDIFF yangguoSet zhugeSet->(zhuge, baiqi}

集合操作实现电商商品筛选

筛选出安卓系统intel、8G

  • SADD  brand:huawei  P40
  • SADD  brand:xiaomi  mi-10
  • SADD  brand:iPhone iphone12
  • SADD os:android  P40  mi-10
  • SADD cpu:brand:intel  P40  mi-10
  • SADD ram:8G  P40  mi-10  iphone12
  • SINTER  os:android  cpu:brand:intel  ram:8G   {P40,mi-10}
ZSet有序集合结构
  1. 点击新闻 ZINCRBY  hotNews:20190819  1  守护香港
  2. 展示当日排行前十 ZREVRANGE  hotNews:20190819  0  9  WITHSCORES
  3. 七日搜索榜单计算 ZUNIONSTORE  hotNews:20190813-20190819  7 hotNews:20190813  hotNews:20190814... hotNews:20190819
  4. 展示七日排行前十 ZREVRANGE hotNews:20190813-20190819  0  9  WITHSCORES

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值