【Redis】實用功能
慢查詢分析
修改配置
1.修改配置檔案
# 超過20ms記錄
slowlog-slower-than 20000
# 儲存1000調慢查詢記錄
slowlog-max-len 1000
2.命令動態修改
config set slowlog-slower-than 20000
config set slowlog-max-len 1000
config rewrite
基本操作
獲取慢查詢日誌:slowlog get [n]
(返回值:1.id; 2.時間戳; 3.命令耗時; 4.執行命令和引數)
獲取慢查詢日誌列表當前長度:slowlog len
慢查詢日誌重置:slowlog reset
最佳實踐
- slowlog-max-len配置建議:線上調大,1000以上
- slowlog-log-slower-than配置建議:根據併發量調整,1毫秒,則QPS最多為1000
- 客戶端出現請求超時,檢查對應時間點是否有慢查詢(慢查詢記錄執行時間<客戶端執行總時間)
- 定期執行slow get防止慢查詢記錄因為過多而丟失
Redis Shell
redis-cli
輸出100次記憶體使用量,間隔1秒:redis-cli -r 100 -i 1 info | grep userd_memory_human
把輸入作為引數:echo "world" | redis-cli -x set hello
redis-server
檢測當前作業系統能否提供1G記憶體:redis-server --test-memory 1024
redis-benchmark
100使用者同時請求Redis,執行20000次:redis-benchmark -c 100 -n 20000
Pipeline
問題:Redis提供了批量操作命令,有效節約RTT,但是大部分命令不支援批量操作
解決:Pipeline將一組Redis命令進行組裝,通過一次RTT傳輸,節約了時間
最佳實踐:多次Pipeline組裝命令,降低 網路堵塞 和 客戶端等待
事務與Lua
事務:將一起執行的命令放在 multi 和 exec 命令之間
Lua:在Redis執行Lua指令碼有 eval 和 evalsha 命令
新資料模型
Bitmaps:操作位功能,有效地提高記憶體使用率和開發效率
HyperLogLog:利用極小的記憶體空間完成獨立總數的統計
釋出訂閱
釋出訊息:publish channel message
訂閱訊息:subscribe channel [channel ...]
檢視活躍的頻道:pubsub channels [pattern]
檢視頻道訂閱數:pubsub numsub [channel ...]
小結
慢查詢分析、Redis Shell可以用於測試分析Redis
Pipeline、事務和Lua可以用來優化速度,增加原子性
新資料模型、釋出訂閱可以用在特殊的場景