<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          面試官:說下你項目中 Redis 常見使用場景

          共 3211字,需瀏覽 7分鐘

           ·

          2022-01-09 02:53


          下面分享16個Redis常用使用場景


          目錄

          • 緩存
          • 數(shù)據(jù)共享分布式
          • 分布式鎖
          • 全局ID
          • 計數(shù)器
          • 限流
          • 位統(tǒng)計
          • 購物車
          • 用戶消息時間線timeline
          • 消息隊列
          • 抽獎
          • 點贊、簽到、打卡
          • 商品標簽
          • 商品篩選
          • 用戶關注、推薦模型
          • 排行榜

          1、緩存

          String類型

          例如:熱點數(shù)據(jù)緩存(例如報表、明星出軌),對象緩存、全頁緩存、可以提升熱點數(shù)據(jù)的訪問數(shù)據(jù)。

          2、數(shù)據(jù)共享分布式

          String 類型,因為 Redis 是分布式的獨立服務,可以在多個應用之間共享

          例如:分布式Session

          <dependency>?
          ?<groupId>org.springframework.sessiongroupId>?
          ?<artifactId>spring-session-data-redisartifactId>?
          dependency>

          3、分布式鎖

          String 類型setnx方法,只有不存在時才能添加成功,返回true

          public?static?boolean?getLock(String?key)?{
          ????Long?flag?=?jedis.setnx(key,?"1");
          ????if?(flag?==?1)?{
          ????????jedis.expire(key,?10);
          ????}
          ????return?flag?==?1;
          }

          public?static?void?releaseLock(String?key)?{
          ????jedis.del(key);
          }

          4、全局ID

          int類型,incrby,利用原子性

          incrby userid 1000

          分庫分表的場景,一次性拿一段

          5、計數(shù)器

          int類型,incr方法

          例如:文章的閱讀量、微博點贊數(shù)、允許一定的延遲,先寫入Redis再定時同步到數(shù)據(jù)庫

          6、限流

          int類型,incr方法

          以訪問者的ip和其他信息作為key,訪問一次增加一次計數(shù),超過次數(shù)則返回false

          7、位統(tǒng)計

          String類型的bitcount(1.6.6的bitmap數(shù)據(jù)結構介紹)

          字符是以8位二進制存儲的

          set?k1?a
          setbit?k1?6?1
          setbit?k1?7?0
          get?k1?
          /*?6?7?代表的a的二進制位的修改
          a?對應的ASCII碼是97,轉換為二進制數(shù)據(jù)是01100001
          b?對應的ASCII碼是98,轉換為二進制數(shù)據(jù)是01100010

          因為bit非常節(jié)省空間(1 MB=8388608 bit),可以用來做大數(shù)據(jù)量的統(tǒng)計。
          */

          例如:在線用戶統(tǒng)計,留存用戶統(tǒng)計

          setbit?onlineusers?01?
          setbit?onlineusers?11?
          setbit?onlineusers?20

          支持按位與、按位或等等操作

          BITOPANDdestkeykey[key...]?,對一個或多個 key 求邏輯并,并將結果保存到 destkey 。???????
          BITOPORdestkeykey[key...]?,對一個或多個 key 求邏輯或,并將結果保存到 destkey 。?
          BITOPXORdestkeykey[key...]?,對一個或多個 key 求邏輯異或,并將結果保存到 destkey 。?
          BITOPNOTdestkeykey ,對給定 key 求邏輯非,并將結果保存到 destkey 。

          計算出7天都在線的用戶

          BITOP?"AND"?"7_days_both_online_users"?"day_1_online_users"?"day_2_online_users"?...??"day_7_online_users"

          8、購物車

          String 或hash。所有String可以做的hash都可以做

          • key:用戶id;field:商品id;value:商品數(shù)量。
          • +1:hincr。-1:hdecr。刪除:hdel。全選:hgetall。商品數(shù):hlen。

          9、用戶消息時間線timeline

          list,雙向鏈表,直接作為timeline就好了。插入有序

          10、消息隊列

          List提供了兩個阻塞的彈出操作:blpop/brpop,可以設置超時時間

          • blpop:blpop key1 timeout 移除并獲取列表的第一個元素,如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。
          • brpop:brpop key1 timeout 移除并獲取列表的最后一個元素,如果列表沒有元素會阻塞列表直到等待超時或發(fā)現(xiàn)可彈出元素為止。

          上面的操作。其實就是java的阻塞隊列。學習的東西越多。學習成本越低

          • 隊列:先進先除:rpush blpop,左頭右尾,右邊進入隊列,左邊出隊列
          • 棧:先進后出:rpush brpop

          11、抽獎

          自帶一個隨機獲得值

          spop?myset

          12、點贊、簽到、打卡

          假如上面的微博ID是t1001,用戶ID是u3001

          用 like:t1001 來維護 t1001 這條微博的所有點贊用戶

          • 點贊了這條微博:sadd like:t1001 u3001
          • 取消點贊:srem like:t1001 u3001
          • 是否點贊:sismember like:t1001 u3001
          • 點贊的所有用戶:smembers like:t1001
          • 點贊數(shù):scard like:t1001

          是不是比數(shù)據(jù)庫簡單多了。

          13、商品標簽

          老規(guī)矩,用 tags:i5001 來維護商品所有的標簽。

          • sadd tags:i5001 畫面清晰細膩
          • sadd tags:i5001 真彩清晰顯示屏
          • sadd tags:i5001 流程至極

          14、商品篩選

          //?獲取差集
          sdiff?set1?set2
          //?獲取交集(intersection?)
          sinter?set1?set2
          //?獲取并集
          sunion?set1?set2

          假如:iPhone11 上市了

          sadd?brand:apple?iPhone11

          sadd?brand:ios?iPhone11

          sad?screensize:6.0-6.24?iPhone11

          sad?screentype:lcd?iPhone?11

          賽選商品,蘋果的、ios的、屏幕在6.0-6.24之間的,屏幕材質是LCD屏幕

          sinter?brand:apple?brand:ios?screensize:6.0-6.24?screentype:lcd

          15、用戶關注、推薦模型

          follow 關注 fans 粉絲

          相互關注:

          • sadd 1:follow 2
          • sadd 2:fans 1
          • sadd 1:fans 2
          • sadd 2:follow 1

          我關注的人也關注了他(取交集):

          • sinter 1:follow 2:fans

          可能認識的人:

          • 用戶1可能認識的人(差集):sdiff 2:follow 1:follow
          • 用戶2可能認識的人:sdiff 1:follow 2:follow

          16、排行榜

          id 為6001 的新聞點擊數(shù)加1:zincrby hotNews:20190926 1 n6001

          獲取今天點擊最多的15條:zrevrange hotNews:20190926 0 15 withscores


          轉自:菜鳥編程98K
          鏈接:https://blog.csdn.net/qq_39938758/article/details/105577370


          程序汪資料鏈接

          程序汪接的7個私活都在這里,經(jīng)驗整理

          Java項目分享 最新整理全集,找項目不累啦 06版

          堪稱神級的Spring Boot手冊,從基礎入門到實戰(zhàn)進階

          臥槽!字節(jié)跳動《算法中文手冊》火了,完整版 PDF 開放下載!

          臥槽!阿里大佬總結的《圖解Java》火了,完整版PDF開放下載!

          字節(jié)跳動總結的設計模式 PDF 火了,完整版開放下載!

          尚硅谷Java學科全套教程(總207.77GB)


          歡迎添加程序汪個人微信 itwang007? 進粉絲群或圍觀朋友圈

          瀏覽 97
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男女爆操AV | 色婷婷在线视频观看 | 美女黄页视频 | 色色香蕉视频 | 色噜噜av |