1. 程式人生 > >【Redis】實用功能

【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可以用來優化速度,增加原子性
新資料模型、釋出訂閱可以用在特殊的場景