閱讀835 返回首頁    go 技術社區[雲棲]


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.aof
Redis開發運維實踐指南 本文為《Redis開發運維實踐指南》內容,該書作者為黃鵬程,已授權雲棲社區轉載。 



最後更新:2017-05-08 11:01:17

  上一篇:go Redis開發運維實踐數據遷移之將key從當前數據庫移動到指定數據庫
  下一篇:go Redis開發運維實踐常見運維操作(二)