终于把Redis场景设计搞清楚了,需要掌握的都在这了( 二 )


场景一:消息队列实现目前有很多专业的消息队列组件 Kafka、RabbitMQ 等 。我们在这里仅仅是使用 list 的特征来实现消息队列的要求 。 在实际技术选型的过程中 , 大家可以慎重思考 。
list 存储就是一个队列的存储形式:

  1. lpush key value; 在 key 对应 list 的头部添加字符串元素;
  2. rpop key;移除列表的最后一个元素 , 返回值为移除的元素 。
场景二:最新上架商品在交易网站首页经常会有新上架产品推荐的模块 ,这个模块是存储了最新上架前 100 名 。
这时候使用 Redis 的 list 数据结构 , 来进行 TOP 100 新上架产品的存储 。
Redis ltrim 指令对一个列表进行修剪(trim) , 这样 list 就会只包含指定范围的指定元素 。
start 和 stop 都是由 0 开始计数的 , 这里的 0 是列表里的第一个元素(表头) , 1 是第二个元素 。
如下伪代码演示:
4.1set 类型使用场景set 也是存储了一个集合列表功能 。 和 list 不同 , set 具备去重功能 。 当需要存储一个列表信息 , 同时要求列表内的元素不能有重复 , 这时候使用 set 比较合适 。 与此同时 , set 还提供的交集、并集、差集 。
例如 , 在交易网站 , 我们会存储用户感兴趣的商品信息 , 在进行相似用户分析的时候 ,可以通过计算两个不同用户之间感兴趣商品的数量来提供一些依据 。
获取到两个用户相似的产品 ,然后确定相似产品的类目就可以进行用户分析 。
类似的应用场景还有 ,社交场景下共同关注好友 ,相似兴趣 tag 等场景的支持 。
终于把Redis场景设计搞清楚了,需要掌握的都在这了文章插图
4.2Set集合特殊的操作命令setA={A,B,C} setB={B, C}
1)集合与集合之间的交集
sinter setA setB-->得到集合{B,C}
集合与集合之间的并集
sunion setA setB -->得到集合{A,B,C}
3)集合与集合之间的差集
sdiff setA setB-->得到集合{A}
4.3Set集合特殊的操作命令应用场景如何实现微博的微关系设计?
终于把Redis场景设计搞清楚了,需要掌握的都在这了文章插图
5.1 Zset有序集合常用于排行榜 , 如视频网站需要对用户上传视频做排行榜 , 或点赞数与集合有联系 , 不能有重复的成员
终于把Redis场景设计搞清楚了,需要掌握的都在这了文章插图
5.2Zset 类型使用场景
终于把Redis场景设计搞清楚了,需要掌握的都在这了文章插图
【终于把Redis场景设计搞清楚了,需要掌握的都在这了】作者:码农清风链接:


推荐阅读