redis大廠實戰應用場景(一覽衆山小)

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章