1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        16個Redis常見使用場景總結(jié)

        共 3750字,需瀏覽 8分鐘

         ·

        2021-07-30 17:08

        1、緩存

        String類型

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

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

        String 類型,因為 Redis 是分布式的獨立服務(wù),可以在多個應(yīng)用之間共享

        例如:分布式Session

        <dependency> 
         <groupId>org.springframework.session</groupId> 
         <artifactId>spring-session-data-redis</artifactId> 
        </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ù)結(jié)構(gòu)介紹)

        字符是以8位二進(jìn)制存儲的

        set k1 a
        setbit k1 6 1
        setbit k1 7 0
        get k1 
        /* 6 7 代表的a的二進(jìn)制位的修改
        a 對應(yīng)的ASCII碼是97,轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)是01100001
        b 對應(yīng)的ASCII碼是98,轉(zhuǎn)換為二進(jìn)制數(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 求邏輯并,并將結(jié)果保存到 destkey 。       
        BITOPORdestkeykey[key...] ,對一個或多個 key 求邏輯或,并將結(jié)果保存到 destkey 。 
        BITOPXORdestkeykey[key...] ,對一個或多個 key 求邏輯異或,并將結(jié)果保存到 destkey 。 
        BITOPNOTdestkeykey ,對給定 key 求邏輯非,并將結(jié)果保存到 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,可以設(shè)置超時時間

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

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

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

        11、抽獎

        自帶一個隨機(jī)獲得值

        spop myset

        12、點贊、簽到、打卡

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

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

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

        13、商品標(biāo)簽

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

        • sadd tags:i5001 畫面清晰細(xì)膩
        • 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之間的,屏幕材質(zhì)是LCD屏幕

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

        15、用戶關(guān)注、推薦模型

        follow 關(guān)注 fans 粉絲

        相互關(guān)注:

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

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

        • sinter 1:follow 2:fans

        可能認(rèn)識的人:

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

        16、排行榜

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

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

        來源:https://urlify.cn/nyAJZz



        推薦閱讀:

        世界的真實格局分析,地球人類社會底層運行原理

        不是你需要中臺,而是一名合格的架構(gòu)師(附各大廠中臺建設(shè)PPT)

        企業(yè)IT技術(shù)架構(gòu)規(guī)劃方案

        論數(shù)字化轉(zhuǎn)型——轉(zhuǎn)什么,如何轉(zhuǎn)?

        華為干部與人才發(fā)展手冊(附PPT)

        企業(yè)10大管理流程圖,數(shù)字化轉(zhuǎn)型從業(yè)者必備!

        【中臺實踐】華為大數(shù)據(jù)中臺架構(gòu)分享.pdf

        華為的數(shù)字化轉(zhuǎn)型方法論

        華為如何實施數(shù)字化轉(zhuǎn)型(附PPT)

        超詳細(xì)280頁Docker實戰(zhàn)文檔!開放下載

        華為大數(shù)據(jù)解決方案(PPT)

        瀏覽 53
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            欧美三区四区 | m.m视频在线观看 | 欧美www在线视频 | 熟女黄片 | 国内丰满少妇猛烈精品播 | 明星裸体无遮挡 | 在公车上扒开腿吮花蒂在线观看 | 女女调教vk | 69大香蕉 | 欧美日韩精品在线观看 |