835
技術社區[雲棲]
Redis開發運維實踐常見運維操作(三)
3.12 Redis-cli命令行其他操作
1. echo :在命令行打印一些內容
redis 127.0.0.1:6379> echo HongWan "HongWan"
2. quit :退出連接。
redis 127.0.0.1:6379> quit
3. -x選項從標準輸入(stdin)讀取最後一個參數。 比如從管道中讀取輸入:
echo -en "chen.qun" | redis-cli -x set name
4. -r -i
-r 選項重複執行一個命令指定的次數。 -i 設置命令執行的間隔。 比如查看redis每秒執行的commands(qps) redis-cli -r 100 -i 1 info stats | grep instantaneous_ops_per_sec 這個選項在編寫一些腳本時非常有用
5. -c:開啟reidis cluster模式,連接redis cluster節點時候使用。
6. --rdb:獲取指定redis實例的rdb文件,保存到本地。
redis-cli -h 192.168.44.16 -p 6379 --rdb 6379.rdb
7. --slave
模擬slave從master上接收到的commands。slave上接收到的commands都是update操作,記錄數據的更新行為。
8. --pipe
這個一個非常有用的參數。發送原始的redis protocl格式數據到服務器端執行。比如下麵的形式的數據(linux服務器上需要用unix2dos轉化成dos文件)。 linux下默認的換行是\n,windows係統的換行符是\r\n,redis使用的是\r\n. echo -en '*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | redis-cli --pipe
9. -a
如果開啟了requirepass,那麼你如果希望調用或者自己編寫一些外部腳本通過redis-cli進行操作或者監控redis,那麼這個選項可以讓你不用再手動輸入auth。這個選項很普遍,但是往往被人忽視。
6.13 持久化與備份恢複
3.13.1 RDB相關操作
BGSAVE:後台子進程進行RDB持久化 SAVE:主進程進行RDB,生產環境千萬別用,服務器將無法響應任何操作。 LASTSAVE: 返回上一次成功SAVE的Unix時間
動態關閉RDB:
動態設置RDB:
永久關閉RDB:
永久設置RDB:
查看RDB是否打開:
空的即是關閉,有數字的都是打開的。
3.13.2 AOF相關操作
在後台執行一個 AOF文件重寫操作
動態關閉AOF:
動態打開AOF:
永久關閉AOF:
永久打開AOF:
將appendonly yes設置在redis.conf中
3.13.3 備份
對於RDB和AOF,都是直接拷貝文件即可,可以設定crontab進行定時備份: cp /var/lib/redis/dump.rdb /somewhere/safe/dump.$(date +%Y%m%d%H%M).rdb
3.13.4 恢複
如果隻使用了RDB,則首先將redis-server停掉,刪除dump.rdb,最後將備份的dump.rdb文件拷貝回data目錄並修改相關屬主保證其屬主和redis-server啟動用戶一致,然後啟動redis-server。
如果是RDB+AOF的持久化,隻需要將aof文件放入data目錄,啟動redis-server,查看是否恢複,如無法恢複則應該將aof關閉後重啟,redis就會從rdb進行恢複了,隨後調用命令BGREWRITEAOF進行AOF文件寫入,在info的aof_rewrite_in_progress為0後一個新的aof文件就生成了,此時再將配置文件的aof打開,再次重啟redis-server就可以恢複了。注意先不要將dump.rdb放入data目錄,否則會因為aof文件萬一不可用,則rdb也不會被恢複進內存,此時如果有新的請求進來後則原先的rdb文件被重寫。
如果隻配置了AOF,重啟時加載AOF文件恢複數據。
恢複速度參見新浪的測試結果:

這個結果是可信的,在一台SSD、4個CPU的虛擬機上測試為28.3G/s.
檢查修複AOF文件:
redis-check-aof data/appendonly.aofRedis開發運維實踐指南 本文為《Redis開發運維實踐指南》內容,該書作者為黃鵬程,已授權雲棲社區轉載。
最後更新:2017-05-08 11:01:17