【乾貨】Redis進階合集,想學的進來看看!

Redis命令的生命週期git


    1.客戶端把Redis指令寫入到客戶端緩衝區中redis

    2.緩衝區滿後發送到Redis服務器,並先寫入服務端緩衝區算法

    3.從緩衝區裏面拿出命令請求放置到請求隊列中排隊等待處理服務器

    4.執行命令網絡

    5.返回命令結果運維


Redis慢查詢ide


    慢查詢發生在生命週期的第三階段,是指僅僅執行命令階段比較慢被稱爲慢查詢性能

    客戶端超時不-定是慢查詢,可是慢查詢時是客戶端超時的一個可能因素。編碼

    

Redis慢查詢相關配置spa


 1. slowlog-max-len

    它決定了慢查詢日誌最多能保存多少條日誌,slow log自己是一個內存中的FIFO隊列,當隊列大小超過slowlog-max-len時,最舊的一條日誌將被刪除,而最新的一條日誌加入到slow log中。

        默認值:128

        支持動態配置

 2.slowlog-log-slower-than

它決定要對執行時間大於多少微妙(microsecond ,1秒= 1,000,000微妙)的查詢進行記錄

        默認值: 10000

        slowlog-log-slower-than= 0,記錄全部命令

        slowlog-log-slower-than < 0,不記錄任何命令

        支持動態配置

 

慢查詢相關命令


 1.slowlog get [n]

         含義:獲取慢查詢列表中的慢查詢信息

         n:獲取出多少條慢查詢數據信息

 2.slowlog len

        含義:獲取慢查詢隊列長度

 3.slowlog reset

        含義:清空慢查詢隊列


慢查詢信息字段


     1.字段1:惟一性的日誌標識符(Integer)

     2.字段2:被記錄命令的執行時間點,已UNIX時間戳格式表示(Integer)

     3.字段3:查詢執行時間,以微秒爲單位

     4.字段4:完整的執行命令

     

慢查詢運維經驗


slowlog-log-slower-than不要設置過大,默認10ms,一般設置1ms。

由於Redis的qps是萬級別的,即每秒應能執行10000次請求當一條命令執  行1ms時,那每秒只能執行1000次請求 slowlog-max-len 不要設 置地太小,一般設置1000左右須要理解命令的生命週期按期持久化慢查詢。  

由於慢查詢只存儲於內存中,宕機慢查詢數據就會丟失經過按期slowlog get將慢查詢數據轉存到MySQL或者ES中


pipeline的好處


省略因爲單線程致使的命令排隊時間,一次命令的消耗時間 = 一次網絡時間+命令執行時間。比起命令執行時間,網絡時間極可能成爲系統的瓶頸。

pipeline的做用是將一批命令進行打包,而後發送給服務器,服務器執行完按順序打包返回。經過pipeline, 一次pipeline (n條命令) = 一次網絡時間+ n次命令時間


pipeline VS M操做(mget、mset)


M操做在Redis隊列中是一個原子操做,pipeline不是原子操做

pipeline 與M操做都會將數據順序的傳送與順序地返回

pipeline注意事項

  • 每次pipeline攜帶數量不推薦過大, 不然會影響網絡性能

  • pipeline每次只能做用在一個Redis節點 上


發佈訂閱的角色與通訊模型


1.角色

  • 發佈者(publisher)

  • 訂閱者(subscriber)

  • 頻道(channel)


2.通訊模型

  • RedisServer中能夠建立若channel,一個訂閱者能夠訂閱多個channel

  • 當發佈者向一個頻道中發佈一條消息時,全部的訂閱者都將會收到消息

  • Redis的發佈訂閱模型沒有消息積壓功能,即新加入的訂閱者收不到發佈者以前發佈的消息

    當訂閱者收到消息時,消息內容以下

    第一行: 固定內容message

    第二行: channel的名稱

    第三行: 收到的新消息


發佈訂閱的API

    1.publish channel message

        含義:向指定的channel中發佈消息

    2.subscribe channel1 [channel...]

        含義:訂閱給定的一個或多個渠道的消息

    3.unsubcribe [channel1 [chane2..]

        含義:取消訂閱給定的一個或多個渠道的消息

    ###4.psubscribe pattern1 [pattern2..]

        含義:訂閱一個或多個符合給定模式的頻道

    ###5.punsubscribe [pattern1 [patern..]

        含義:退訂全部給定模式的頻道

    6.pubsub channels

        含義:列出至少有一個訂閱者的頻道

    ###7.pubsub numsub [hannel.]

        含義:列出給定頻道的訂閱者數量


BitMap的API

1.getbit key offset

        含義:對key所存儲的字符串值, 獲取指定偏移量上的位(bit)

2.setbit key offset value

        含義:對key所存儲的字符串值,設置或清除指定偏移量上的位(bit)

        返回值爲該位在setbit以前的值

        value只能取0或1

        offset從0開始, 即便原位圖只能10位,offset能夠取1000

3.bitcount key [start end]

    含義:獲取位圖指定範圍中位值爲1的個數

    若是不指定start與end,則取全部

4.bitop op destKey key1 [key2..]

    含義:作多個BitMap的and (交集) 、or (並集)、not (非)、xor (異或)操做並將結果保存在destKey中

5.bitpos key tartgetBit [start end]

    含義:計算位圖指定範圍第一 個偏移量對應的的值等於targetBit的位置

        找不到返回-1

        start與end沒有設置, 則取所有

        targetBit只能取0或者1


BitMap的使用場景


統計每日用戶的登陸數。每一位標識一個用戶ID,當某個用戶訪問咱們的網頁或執行了某個操做,就在bitmap中把標識此用戶的位設置爲1。

#HyperLogL og簡介

    基於HyperLogLog算法, 使用極小空間完成獨立數統計的功能

    本質仍是一個字符串

    十分節約內存

    官方給出存在0.81%的錯誤率

    沒法取出單條數據

    

HyperLogL og的相關命令


1.pfadd key element1 [element2..]

    含義:向HyperLogLog中添加元素

2.pfcount key1 [key2..]

    含義:計算HyperLogLog的獨立總數

3.pfmerge destKey key1 [key2..]j

    含義:合併多個hyperLogLog到destKey中

    

GEO簡介


  • Redis 3.2添加新特性

  • 功能:存儲經緯度、計算兩地距離、範圍計算等

  • 基於ZSet實現

  • 刪除操做使用zrem


GEO相關命令


1.geoadd key longitude latitude member [lon latmember..]

    含義:增長地理位置信息

        longitude :經度

        latitude :緯度

        member :標識信息

2.geopos key member1 [member2...]

    含義:獲取地理位置信息

###3.geodist key member1 member2 [unit]

            含義:獲取兩個地理位置的距離

            unit取值範圍

                m(米,默認)

                km (公里)

                mi (英里)

                ft (英尺)

###4.georadius key longitude latitude unit [withcoord] [withdist] [withhash] [COUNT count] [sort] [store key] [storedist key]

     含義:以給定的經緯度爲中心,返回包含的位置元素當中,與中心距離不超過給定最大距離的全部位置元素。

           

unit取值範圍

  • m(米)

  • km (公里)

  • mi (英里)

  • ft(英尺)

    withcoord: 將位骯素的經度與緯度也一併返回

    withdist: 在返回位置元素的同時,將距離也-並返回。距離的單位和用戶給定的範圍單位保持-致

     withhash: 以52位的符號整數形式,返回位置元素通過geohash編碼的有序集合分值。用底層應用或調試,實際做用不大。


            sort取值範圍

            asc: 根據中心位置, 按照從近到遠的方式返回位置元素

            desc:根據中心位置, 按照從遠到近的方式返回位置元素

            store key:將返回結果而的地理位置信息保存到指定鍵


5.georadiusbymember key member radius unit [withcoord] [withdist][withhash][COUNT count][sort][store key] [storedist key]

含義:以給定的元素爲中心,返回包含的位置元素當中,與中心距離不超過給定最大距離的全部位置元素。


        unit取值範圍

        m(米)

        km (公里)

        mi (英里)

        ft (英尺)

    withcoord: 將位置元素的經度與緯度也一併返回

    withdist: 在返回位置元素的同時,將距離也一併返回。距離的單位和用戶給定的範圍單位保持一致

    withhash: 以52位的符號整數形式,返回位置元素通過geohash編碼的有序集合分值。用更於底層應用或調試,實際做用不大。


    sort取值範圍

        asc: 根據中心位置,按照從近到遠的方式返回位置元素

        desc: 根據中心位置, 按照從遠到近的方式返回位置元素

    store key:將返回結果而的地理位置信息保存到指定鍵

    storedist key:將返回結果距離中心節點的距離保存到指定鍵

相關文章
相關標籤/搜索