1. 程式人生 > >redis-11-伺服器管理

redis-11-伺服器管理

一、概述:

    Redis在設計之初就被定義為長時間不間斷執行的服務程序,因此大多數系統配置引數都可以在不重新啟動程序的情況下立即生效。即便是將當前的持久化模式從AOF切換到RDB也無需重啟。
    在Redis中,提供了一組和伺服器管理相關的命令,其中就包含和引數設定有關的CONFIG SET/GET command。

二、相關命令列表:

命令原型    時間複雜度    命令描述    返回值
CONFIG GET parameter          主要用於讀取伺服器的執行時引數,但是並不是所有的配置引數都可以通過該命令進行讀取。其中該命令的引數接受glob風格的模式匹配規則,因此如果引數中包含模式元字元,那麼所有匹配的引數都將以key/value方式被列出。如果引數是*,那麼該命令支援的所有引數都將被列出。最後需要指出的是,和redis.conf中不同的是,在命令中不能使用數量縮寫格式,如GB、KB等,只能使用表示位元組數量的整數值。    
CONFIG SET parameter value          該命令用於重新配置Redis伺服器的執行時引數,在設定成功之後無需重啟便可生效。然而並非所有的引數都可以通過該命令進行動態設定,如果需要獲悉該命令支援哪些引數,可以檢視CONFIG GET * 命令的執行結果。如果想在一個命令中設定多個同類型引數,如redis.conf配置檔案中的save引數:save 900 1/save 300 10。在該命令中我們可以將多個key/value用雙引號括起,並用空格符隔開,如:config set save "900 1 300 10"。     OK表示設定成功,否則返回相關的錯誤資訊。
CONFIG RESETSTAT     O(1)    Reset INFO命令給出的統計數字。    始終返回OK。
DBSIZE         返回當前開啟的資料庫中Keys的數量。    Key的數量。
FLUSHALL         清空當前伺服器管理的資料庫中的所有Keys,不僅限於當前開啟的資料庫。    
FLUSHDB         清空當前資料庫中的所有Keys。    
INFO         獲取和伺服器執行狀況相關的一些列統計數字。    
SAVE         設定RDB持久化模式的儲存策略。    
SHUTDOWN         停止所有的客戶端,同時以阻塞的方式執行記憶體資料持久化。如果AOF模式被啟用,則將快取中的資料flush到AOF檔案。退出伺服器。     
SLAVEOF host port          該命令用於修改SLAVE伺服器的複製設定。如果一個Redis伺服器已經處於SLAVE狀態,SLAVEOF NO ONE命令將關閉當前伺服器的被複制狀態,與此同時將該伺服器切換到MASTER狀態。該命令的引數將指定MASTER伺服器的監聽IP和埠。還有一種情況是,當前伺服器已經是另外一臺MASTER的SLAVE了,在執行該命令後,當前伺服器將終止和之前MASTER之間的複製關係,而將成為新MASTER的SLAVE,之前MASTER中的資料也將被清空,改為新MASTER中的資料。然而如果在當前SLAVE伺服器上執行的是SLAVEOF NO ONE命令,那麼該伺服器只是中斷與當前MASTER的複製關係,並升級為獨立的MASTER,其中的資料也不會被清空。    
SLOWLOG subcommand [argument]          該命令主要用於讀取執行時間較長的命令。其中執行時間的評判標準僅為命令本身的執行時間,並不包括網路互動時間。和該命令相關的配置引數主要有兩個,第一個就是執行之間的閾值(以微秒為單位),即執行時間超過該值的命令都會被存入slowlog佇列,以供該命令讀取。第二個是slowlog佇列的長度,如果當前命令在存入之前,該佇列中的命令已經等於該引數,在命令進入之前,需要將佇列中最老的命令移出佇列。這樣可以保證該佇列所佔用的記憶體總量保持在一個相對恆定的大小。由於slowlog佇列不會被持久化到磁碟,因此Redis在收集命令時不會對效能產生很大的影響。通常我們可以將引數"slowlog-log-slower-than"設定為0,以便收集所有命令的執行時間。該命令還包含以下幾個子命令:
1). SLOWLOG GET N: 從slowlog佇列中讀取命令資訊,N表示最近N條命令的資訊。
2). SLOWLOG LEN:獲取slowlog佇列的長度。
3). SLOWLOG RESET:清空slowlog中的內容。
最後給出SLOWLOG GET命令返回資訊的解釋。
redis 127.0.0.1:6379> slowlog get 10
    1) 1) (integer) 5                 #唯一表示符,在Redis重啟之前,該值保證唯一。
        2) (integer) 1330369320 #Unix Timestamp格式表示的命令執行時間。
        3) (integer) 13               #命令執行所用的微秒數。
        4) 1) "slowlog"               #以字串陣列的格式輸出收集到的命令及其引數。
            2) "reset"