前幾篇我們介紹了 Redis 的一些概念和操作方式,都是偏向如何使用 Redis。所以這篇就要來介紹如何管理 Redis Server。
Info 可以取得 Server 上的各種資訊和統計數值。
section 可以指定只要顯示哪部分的訊息,例如 : CPU、Memory 等等。若沒指定 section 則會全部顯示。
範例 :
詳細顯示的內容分別代表什麼請參考 Redis 官網。
Bgrewriteaof (Begin Rewrite AOF) 用於以異步的方式執行一個 AOF(Append Only File)文件的重寫。AOF 是一個儲存指令的文件,他會將所有有寫入要求的指令紀錄起來,在下次 Redis 重新啟動時再把這些指令從頭到尾執行一遍,就可以恢復重新啟動前的資料。
在 Redis 2.4 開始 AOF 重寫會由 Redis 自動觸發,Bgrewriteaof 仍可以用於手動觸發執行。
Bgsave 用於以異步的方式儲存當下的資料到硬碟。
Bgsave 會在 Redis 的安裝目錄下產生一個 dump.rdb
的檔案用於儲存資料再重起時讀取。檔案的位置可以使用 config get dir
來獲得。
上述介紹的 Bgrewriteaof 和 Bgsave 正是用來實現 Redis 持久化的作法,也就是當 Server 被關機了之後再重新啟動資料不會遺失。至於該用哪一個 Redis 官方也有針對兩種做法提出優缺點,但是官方還是建議兩種都使用,這樣可以提高持久化的效果。
詳細的比較之後會在另一篇作介紹和說明。
Save 用於以同步的方式儲存當下的資料到硬碟。通常儲存到硬碟會由 Bgsave 指令來執行,但是如果負責保存資料的後台子 Process 出現問題時,還可以用 Save 作為最後手段。
Lastsave 會顯示上一次儲存資料到硬碟的時間,以 Unix Timestamp 顯示。可以在 Bgsave 執行完後使用 Lastsave 來追蹤 Bgsave 是否完成。
Client 可以用來查看和設定客戶端的相關資訊。Client 支援以下幾種指令 :
Getname
Getname 用於取得客戶端的名稱,不過新進的連線預設是沒有名字的所以會回傳 nil。
Setname
Setname 用於設定客戶端的名稱。
範例 :
List
List 用於列出所有連線到 Redis Server 的客戶資訊。
範例 :
可以看到列出來的客戶資訊,name 是 c1,正是前面介紹 setname 所設定的名稱。
Kill
Kill 用於關閉客戶端的連線。
addr 是客戶端的 ip:port。
範例 :
Config 用於設定 Redis 的一些配置設定,在 Redis (一) - 基本概念 這篇我們有介紹過如何查看和修改配置。這裡我們介紹另外兩個指令。
Rewrite
Rewrite 用於重寫 redis.conf,因為使用 config set 所修改的配置可能會和 redis.conf 的文件描述不同,所以需要透過 Rewrite 指令來將配置重新寫入到 redis.conf。
config get 和 config set 所使用的格式和 redis.conf 有一些是不同的,例如 :
範例 :
Resetstat 用於重設 Info 命令中的一些統計數據。
詳細會重設哪些數據請參考 Redis 官網。
Dbsize 用於顯示目前的 DB 的 Key 總數。
範例 :
Debug Object 用於取得更多 Key 的訊息。主要用於除錯使用。
範例 :
詳細的輸出訊息請參考 Redis 官網。
Debug Segfault 用於開發時模擬 Bug 發生,他會執行一個不合法的 Memory Accsee 讓 Redis 掛掉。
範例 :
Flushdb 會清空目前所在的 DB 的所有 Key,其他的 DB 不受影響,但是在使用上還是要小心使用。此外這個命令不會失敗。
範例 :
Flushall 會清空整個 Redis Server 的 Key,也就是所有的 DB 都會被清空。所以使用上要非常謹慎,而這個命令一樣也不會失敗。
Monitor 會即時的輸出 Redis Server 收到指令。
範例 :
另外開啟一個 terminal 連線到 Redis Server,並輸入一些指令。再回到原本的 terminal 就可以看到指令都被輸出了。
Sync 用於同步主 Server 和其他的附屬 Server 。
範例 :
Shutdown 用於關閉 Redis Server,命令執行時會執行以下這些操作 :
save 是可以選擇是否要做的,若選擇 Save 會強制執行儲存,若選擇 Nosave 就不會儲存資料,相當於強制關閉 Server。
Slaveof 可以將目前的 Redis Server 轉換為某個 Redis Server 的附屬 Server。
如果目前的 Server 已經是某個主 Server 的附屬 Server,在設定完 slaveof 之後,這台 Server 就不會在跟原本的主 Server 進行同步。
範例 :
如果想讓某個附屬 Server 變成主 Server 可以設定 No One 來斷開主 Server,如下 :
Slowlog 用來紀錄查詢指令的執行時間的日誌系統,也就是如果有指令執行時間超過設定的時間就會被紀錄下來。
subcommand 有以下幾種指令可以選擇 :
Get
Get 用於取得 SlowLog
argument 可以指定要輸出顯示的 Slowlog 數量,未指定則輸出全部。
範例 :
首先為了測試要先將設定檔的 slowlog-log-slower-than 改成 10 微秒
接著執行任意指令後再使用 slowlog get 來取得 Slowlog。
Len
Len 用來查看目前的 Slowlog 數量。
範例 :
在 redis.conf 設定檔裡有 slowlog-max-len 這項設定,是用來設定 Slowlog 允許的最大紀錄數量。
範例 :
Reset
Reset 用於清空 Slowlog。
範例 :
這一篇我們介紹了許多管理 Redis Server 會用到的指令,若想知道更詳細的內容請參考 Redis 官網。
[1] Redis持久化––RDB和AOF 的區別
[2] Redis Server
[3] Redis 的使用規範
Redis