博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【商城】redis大厂实战应用场景(一览众山小)
阅读量:4118 次
发布时间:2019-05-25

本文共 2413 字,大约阅读时间需要 8 分钟。

redis数据类型

redis数据类型有5种,分别是stringlistsethashzset,他们在各自领域里面都有哪些实践“应用场景”呢,请继续看完下面内容。

string(字符串)

也是我们最常用的数据类型,通常用于将数据转换后存储到到Redis缓存,常用的方法有set和get方法,这里就不做过多介绍。

  1. 计数器
    INCR article:readcount:{文章id}
  2. Web集群session共享
    Spring session + redis实现session共享
  3. 分布式系统全局序列号
    INCRBY orderId 1000 //批次生成

list(链表)

  1. 微信公众号和微博消息
  • 例如小马哥关注了InfoQ,阿里技术等大V
    1)InfoQ发公众号消息,消息ID为10010
    LPUSH msg:{小马哥-ID} 10010
    2)阿里技术发公众消息,消息ID为10016
    LPUSH msg:{小马哥-ID} 10016
    3)查看最新的公众号消息
    LRANGE msg:{小马哥-ID} 0 5
  1. 支付宝或者微信订单查询
    在这里插入图片描述
    如何处理表一对多关系的设计,以订单为例子
    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(集合)

  1. 抽奖功能,支付宝内抽取华为P40商品,点击【参与抽奖】按钮,到底发生了什么?

    在这里插入图片描述
    1)点击参与抽奖加入集合
    SADD raffle:product-0001 {userId}
    2)查看抽奖所有用户
    SMEMBERS raffle:product-0001
    3)抽取count名中奖者
    SRANDMEMBER raffle:product-0001 [count]或SPOP raffle:product-0001 [count]

  2. 电商商品筛选,究竟是如何实现?

    在这里插入图片描述
    实现分类搜索
    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}

  3. 微信微博点赞、收藏、标签功能

    在这里插入图片描述
    1)点赞
    SADD like:{消息ID} {用户ID}
    2)取消点赞
    SREM like:{消息ID}{用户ID}
    3)检查用户是否点过赞
    SISMEMBER like:{消息ID}{用户ID}
    4)获取点赞的用户列表
    SMEMBERS like:{消息ID}
    5)获取点赞用户数
    SCARD like:{消息ID}

  4. 微博微信实现关注模型

    在这里插入图片描述
    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. 实现排行榜功能
    在这里插入图片描述
    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/

你可能感兴趣的文章
Xcode 报错: Extra argument in call
查看>>
iTunes Connect 上传APP报错: Communication error. please use diagnostic mode to check connectivity.
查看>>
#import <Cocoa/Cocoa.h> 报错 Lexical or Preprocessor Issue 'Cocoa/Cocoa.h' file not found
查看>>
`MQTTClient (~> 0.2.6)` required by `Podfile`
查看>>
X-Code 报错 ld: library not found for -lAFNetworking
查看>>
Bitcode
查看>>
If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
查看>>
腾讯一面二面题目
查看>>
2014腾讯面试题整理
查看>>
腾讯面试题总结,似乎是面试C++方向的(小巫总结)
查看>>
腾讯后台开发三面面试题
查看>>
腾讯科技(北京)有限公司--面试题
查看>>
SecureCRT 自定义标签
查看>>
ffmpeg常用命令记录
查看>>
linux shell 编程(一)
查看>>
linux shell 编程(三)
查看>>
linux shell 编程(二)
查看>>
linux shell 编程(四)
查看>>
php中的$_REQUEST、$_GET、$_POST
查看>>
http协议中的头部字段:Transfer-Encoding
查看>>