本文共 2413 字,大约阅读时间需要 8 分钟。
redis数据类型
redis数据类型有5种,分别是string、list、set、hash、zset,他们在各自领域里面都有哪些实践“应用场景”呢,请继续看完下面内容。
string(字符串)
也是我们最常用的数据类型,通常用于将数据转换后存储到到Redis缓存,常用的方法有set和get方法,这里就不做过多介绍。
- 计数器 INCR article:readcount:{文章id}
- Web集群session共享 Spring session + redis实现session共享
- 分布式系统全局序列号 INCRBY orderId 1000 //批次生成
list(链表)
- 微信公众号和微博消息
- 例如小马哥关注了InfoQ,阿里技术等大V 1)InfoQ发公众号消息,消息ID为10010 LPUSH msg:{小马哥-ID} 10010 2)阿里技术发公众消息,消息ID为10016 LPUSH msg:{小马哥-ID} 10016 3)查看最新的公众号消息 LRANGE msg:{小马哥-ID} 0 5
- 支付宝或者微信订单查询 如何处理表一对多关系的设计,以订单为例子 1)用户libiao有多个订单,订单key为order:1,order:2,order:3,结合hmset hmset order:1 orderId 1 orderName:瑞信咖啡 money 36.6 time 2020-05-20 hmset order:2 orderId 1 orderName:京东商城 money 38.6 time 2020-05-20 hmset order:3 orderId 1 orderName:瑞信咖啡 money 39.6 time 2020-05-20 2)把订单信息的key放入队列 lpush user:libiao:order order:1 order:2 order:3 3)新产生一个订单order:4 hmset order:4 orderId 1 orderName:微信红包 money 49.6 time 2020-05-21 4)追加一个order:4放入队列第一个位置 lpush user:libiao:order order:4 5)当需要查询用户订单记录时 List orderKeys = lrange user:libiao:order 0 -1 //查询user:libiao所有订单key值 for (Order order: orderKeys){ hmget order:{1} }
set(集合)
-
抽奖功能,支付宝内抽取华为P40商品,点击【参与抽奖】按钮,到底发生了什么?
1)点击参与抽奖加入集合 SADD raffle:product-0001 {userId} 2)查看抽奖所有用户 SMEMBERS raffle:product-0001 3)抽取count名中奖者 SRANDMEMBER raffle:product-0001 [count]或SPOP raffle:product-0001 [count] -
电商商品筛选,究竟是如何实现?
实现分类搜索 SADD brand:huawei P40 SADD brand:xiaomi mi-10 SADD brand:iphone iphone11 SADD os:android P40 mi-11 (按照操作系统放入集合) SADD cpu:brand:intel P40 mi-11(按照CPU放入集合) SADD ram:8g P40 mi-11 iphone11 (1) 查询android系统,CPU是Intel,8G内存手机,取交集 SINTER os:android cpu:brand:intel ram:8g—>{P40, mi-11} (2) 查询iphone品牌,8G内存的手机,取交集 SINTER brand:iphone ram:8g—>{iphone11} -
微信微博点赞、收藏、标签功能
1)点赞 SADD like:{消息ID} {用户ID} 2)取消点赞 SREM like:{消息ID}{用户ID} 3)检查用户是否点过赞 SISMEMBER like:{消息ID}{用户ID} 4)获取点赞的用户列表 SMEMBERS like:{消息ID} 5)获取点赞用户数 SCARD like:{消息ID} -
微博微信实现关注模型
1) 例如小马哥关注人如下 mySet -> {mht,lyh,lj} 小马哥关注了马化腾,李彦宏,雷军; 2) 马化腾关注人如下 mhtSet -> {lqd,lyh,lj} 马腾哥关注了刘强东,李彦宏,雷军; 3)刘强东关注人如下 lqdSet -> {lqd,lyh,ncm} 马腾哥关注了刘强东,李彦宏,奶茶妹;
- 小马哥和马腾哥共同关注的人 SINTER mySet mhtSet -> {lyh,lj}
- 小马哥关注的人也关注他(雷军) SISMEMBER mySet lj
- 小马哥可能认识的人 SDIFF mySet mhtSet ->{lqd}
zset(排序集合)
- 实现排行榜功能 1)点击新闻 ZINCRBY hostNew:20200520 1 {msgID:李现冲浪} 2)展示当日排行前十 ZREVRANGE hostNew:20200520 0 9 WITHSCORES 3)七日搜索榜单计算 ZUNIONSTORE hostNew:20200520-20200527 7 hostNew:20200520 hostNew:20200521…hostNew:20200527 4)展示七日排行前十 ZREVRANGE hostNew:20200520-20200527 0 9 WITHSCORES
转载地址:http://sccpi.baihongyu.com/