Redis篇 - 4. 慢查詢、Pipeline

一、慢查詢
  1. 簡介redis

    1. 慢查詢顧名思義是將redis執行命令較慢的命令記錄下來,redis處理慢查詢時是將慢查詢記錄到慢查詢隊列中
  2. 慢查詢配置微信

    1. slowlog-max-len 慢查詢隊列長度(記錄多少條慢查詢,默認128)
    2. slowlog-log-slower-than 慢查詢閥值(單位:微秒,默認10000)網絡

      1. slowlog-log-slower-than=0, 記錄全部命令
      2. slowlog-log-slower-than<0, 不記錄任何命令
    3. 查看當前配置
127.0.0.1:6379> config get slowlog*
1) "slowlog-log-slower-than"
2) "10000"
3) "slowlog-max-len"
4) "128"
  1. 動態配置(還能夠修改配置文件重啓,但不建議,特別是沒作持久化的redis)併發

    1. config set slowlog-max-len 100
    2. config set slowlog-log-slower-than 1000
  2. 慢查詢命令高併發

    1. slowlog get [n] : 獲取慢查詢隊列
    2. slowlog len : 獲取慢查詢隊列長度
    3. slowlog reset : 清空慢查詢隊列
二、Pipeline(流水線)
  1. 簡介code

    1. redis執行一條命令有四個過程:發送命令、命令排隊、命令執行、返回結果;整個過程是一個往返時間(RTT)。若是有n條命令,就會消耗n次RTT。Redis的客戶端和服務端可能部署在不一樣的機器上。在兩地的數據傳輸受網絡速度的影響,消耗n次的RTT會增長網絡成本,這個和Redis的高併發高吞吐特性背道而馳。Pipeline(流水線)機制能改善上面這類問題,它能將一組Redis命令進行組裝,經過一次RTT傳輸給Redis,再將這組Redis命令的執行結果按順序返回給客戶端。這樣就只要一次的往返時間。
  2. 做用隊列

    1. 爲了解決批量處理而消耗的大量網絡傳輸時間(由於redis執行是微妙級,大量操做更多消耗的是網絡時間)
    2. 對比單次操做
命令 時間 數據量 特性
n個命令 n次網絡 + n次執行 1條命令 原子性
1次pipeline(n個命令) 1次網絡 + n次執行 n條命令 非原子性

PS: 更多文章請關注微信公衆號:浮話ip

相關文章
相關標籤/搜索