redis做爲一個服務,和普通的oracle,mysql服務器運維維護和系統調優是同樣的。html
關注內存,CPU,網絡IO,阻塞等。因爲不會涉及複雜的SQL業務邏輯,缺乏SQL調優這一塊。mysql
1.經過INFO命令,要清楚瞭解服務器的現狀。
參照:http://redisdoc.com/server/info.htmlgit
section | |
server |
記錄了 Redis 服務器的信息 |
clients | 記錄了已鏈接客戶端的信息(確認併發狀況,繁忙程度) |
memory |
記錄了服務器的內存信息 (確認內存消耗,內存碎片) |
persistence | 記錄了跟 RDB 持久化和 AOF 持久化有關的信息(確認是否引發性能IO) |
stat |
通常統計信息(確認併發狀況,繁忙程度,命中率) |
replication |
主/從複製信息(同步狀況) |
cpu |
CPU 的計算量統計信息 |
keyspace |
記錄了數據庫相關的統計信息 |
2.經常使用運維操做redis
#探測服務是否可用 [root@hadoop2 redis]# bin/redis-cli 127.0.0.1:6379> ping PONG #監控redis請求執行信息 127.0.0.1:6379> monitor OK 1472956931.192969 [0 127.0.0.1:42936] "COMMAND" 1472956948.127475 [0 127.0.0.1:42936] "set" "title" "moniter" 1472956964.712026 [0 127.0.0.1:42936] "keys" "*" #查看redis數據庫統計信息 127.0.0.1:6379> info # Server redis_version:3.2.3 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:7994844ebb5a3a63 redis_mode:standalone ... #查看配置 127.0.0.1:6379> config get loglevel 1) "loglevel" 2) "notice" #臨時修改配置 127.0.0.1:6379> config set loglevel 111 (error) ERR Invalid argument '111' for CONFIG SET 'loglevel' 127.0.0.1:6379> config set loglevel debug OK #這會致使修改redis.conf文件 127.0.0.1:6379> config rewrite OK #批量執行操做 gnuhpc@gnuhpc:~$ (echo -en "ping\r\nset key abc\r\nget key\r\n";sleep 1) | nc 127.0.0.1 6379 +PONG +OK $3 abc 在一個腳本中批量執行多個寫入操做: 先把插入操做放入操做文本insert.dat: set a b set 1 2 set h w set f u 而後執行命令:cat insert.bat | ./redis-cli --pipe,或者以下腳本: #!/bin/sh host=$1 port=$; password=$3 cat insert.dat | ./redis-cli -h $host -p $port -a $password --pipe
如下內容來自[http://www.cnblogs.com/gnuhpc/]sql
1.10 模擬宕機
redis-cli debug segfault
1.11 模擬hang
redis-cli -p 6379 DEBUG sleep 30
1.12 重命名命令
rename-command,例如:rename-command FLUSHALL ""。必須重啓。
1.13 執行lua腳本
- -eval 。例如:
redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
1.14 設置密碼
config set requirepass [passw0rd]
1.15 驗證密碼
auth passw0rd
1.16 性能測試命令
redis-benchmark -n 100000
1.17 獲取慢查詢
SLOWLOG GET 10
結果爲查詢ID、發生時間、運行時長和原命令
1.18 查看日誌
日誌位置在/redis/log下,redis.log爲redis主日誌,sentinel.log爲sentinel監控日誌。數據庫
通常處理(發現問題)流程bash
1 |
探測服務是否可用 |
127.0.0.1:6379> ping |
2 |
探測服務延遲 | redis-cli --latency 顯示的單位是milliseconds,做爲參考,千兆網一跳通常延遲爲0.16ms左右 |
3 |
監控正在請求執行的命令 | 在cli下執行monitor,生產環境慎用。 |
4 |
查看統計信息 |
info |
5 |
獲取慢查詢 | SLOWLOG GET 10服務器 結果爲查詢ID、發生時間、運行時長和原命令 默認10毫秒,默認只保留最後的128條。單線程的模型下,一個請求佔掉10毫秒是件大事情,注意設置和顯示的單位爲微秒,注意這個時間是不包含網絡延遲的。網絡 slowlog get slowlog len |
6 |
查看客戶端 | client list 列出全部鏈接 client kill 殺死某個鏈接, 例如CLIENT KILL 127.0.0.1:43501 client getname # 獲取鏈接的名稱 默認nil client setname "名稱" 設置鏈接名稱,便於調試 |
7 |
查看日誌 |
參考資源