一、慢查詢
-
簡介redis
- 慢查詢顧名思義是將redis執行命令較慢的命令記錄下來,redis處理慢查詢時是將慢查詢記錄到慢查詢隊列中
-
慢查詢配置ruby
- 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 : 清空慢查詢隊列
二、Pipeline(流水線)
-
簡介高併發
- redis執行一條命令有四個過程:發送命令、命令排隊、命令執行、返回結果;整個過程是一個往返時間(RTT)。若是有n條命令,就會消耗n次RTT。Redis的客戶端和服務端可能部署在不一樣的機器上。在兩地的數據傳輸受網絡速度的影響,消耗n次的RTT會增長網絡成本,這個和Redis的高併發高吞吐特性背道而馳。Pipeline(流水線)機制能改善上面這類問題,它能將一組Redis命令進行組裝,經過一次RTT傳輸給Redis,再將這組Redis命令的執行結果按順序返回給客戶端。這樣就只要一次的往返時間。
-
做用spa
- 爲了解決批量處理而消耗的大量網絡傳輸時間(由於redis執行是微妙級,大量操做更多消耗的是網絡時間)
- 對比單次操做
命令 |
時間 |
數據量 |
特性 |
n個命令 |
n次網絡 + n次執行 |
1條命令 |
原子性 |
1次pipeline(n個命令) |
1次網絡 + n次執行 |
n條命令 |
非原子性 |
PS: 更多文章請關注微信公衆號:浮話code