1、慢查詢
-
簡介
- 慢查詢顧名思義是將redis執行命令較慢的命令記錄下來,redis處理慢查詢時是將慢查詢記錄到慢查詢隊列中
-
慢查詢配置
- slowlog-max-len 慢查詢隊列長度(記錄多少條慢查詢,默認128)
-
slowlog-log-slower-than 慢查詢閥值(單位:微秒,默認10000)
- slowlog-log-slower-than=0, 記錄所有命令
- slowlog-log-slower-than<0, 不記錄任何命令
- 查看當前配置
127.0.0.1:6379> config get slowlog* 1) "slowlog-log-slower-than" 2) "10000" 3) "slowlog-max-len" 4) "128"
-
動態配置(還可以修改配置文件重啟,但不建議,特別是沒做持久化的redis)
- config set slowlog-max-len 100
- config set slowlog-log-slower-than 1000
-
慢查詢命令
- slowlog get [n] : 獲取慢查詢隊列
- slowlog len : 獲取慢查詢隊列長度
- slowlog reset : 清空慢查詢隊列
2、Pipeline(流水線)
-
簡介
- redis執行一條命令有四個過程:發送命令、命令排隊、命令執行、返回結果;整個過程是一個往返時間(RTT)。如果有n條命令,就會消耗n次RTT。Redis的客戶端和服務端可能部署在不同的機器上。在兩地的數據傳輸受網絡速度的影響,消耗n次的RTT會增加網絡成本,這個和Redis的高並發高吞吐特性背道而馳。Pipeline(流水線)機制能改善上面這類問題,它能將一組Redis命令進行組裝,通過一次RTT傳輸給Redis,再將這組Redis命令的執行結果按順序返回給客戶端。這樣就只要一次的往返時間。
-
作用
- 為了解決批量處理而消耗的大量網絡傳輸時間(因為redis執行是微妙級,大量操作更多消耗的是網絡時間)
- 對比單次操作
命令 | 時間 | 數據量 | 特性 |
---|---|---|---|
n個命令 | n次網絡 + n次執行 | 1條命令 | 原子性 |
1次pipeline(n個命令) | 1次網絡 + n次執行 | n條命令 | 非原子性 |
PS: 更多文章請關注微信公眾號:浮話