1. 程式人生 > >Redis學習(六) Redis 基本運維

Redis學習(六) Redis 基本運維

Redis的單機搭建,主從搭建,Sentinal搭建,以及Redis叢集搭建的步驟參照前面的文章。現在來說一下Redis的基本運維,畢竟如果一切正常是最好的,但是當出現問題不能使用的時候,準確定位問題,並解決才是最重要的。

一、配置檔案

  Redis的配置檔案的註釋還是很詳細的,下面也把它貼出來:

 View Code

  裡面有一些重要的配置還是應該掌握的,至少應該閱讀一遍。當然也可以參照一些更加詳細的部落格:

  • 比如這個:http://www.cnblogs.com/LiZhiW/p/4851631.html

二、Redis 單機操作

  連線Redis可用redis-cli進行連線,具體命令如下:

複製程式碼

D:\data\frame\redis-2.4.5-win32-win64
λ redis-cli.exe --help
redis-cli 2.4.5

Usage: redis-cli [OPTIONS] [cmd [arg [arg ...]]]
  -h <hostname>    Server hostname (default: 127.0.0.1)
  -p <port>        Server port (default: 6379)
  -s <socket>      Server socket (overrides hostname and port)
  -a <password>    Password to use when connecting to the server
  -r <repeat>      Execute specified command N times
  -i <interval>    When -r is used, waits <interval> seconds per command.
                   It is possible to specify sub-second times like -i 0.1.
  -n <db>          Database number
  -x               Read last argument from STDIN
  -d <delimiter>   Multi-bulk delimiter in for raw formatting (default: \n)
  --raw            Use raw formatting for replies (default when STDOUT is not a tty)
  --latency        Enter a special mode continuously sampling latency.
  --help           Output this help and exit
  --version        Output version and exit

Examples:
  cat /etc/passwd | redis-cli -x set mypasswd
  redis-cli get mypasswd
  redis-cli -r 100 lpush mylist x
  redis-cli -r 100 -i 1 info | grep used_memory_human:

When no command is given, redis-cli starts in interactive mode.
Type "help" in interactive mode for information on available commands.

複製程式碼

  不過不建議記,用的時候記得help一下就可以:

redis-cli.exe --help

  連線上以後,可以執行以下操作: 

1 BGREWRITEAOF 
非同步執行一個 AOF(AppendOnly File) 檔案重寫操作
2 BGSAVE 
在後臺非同步儲存當前資料庫的資料到磁碟
3 CLIENT KILL [ip:port] [ID client-id] 
關閉客戶端連線
4 CLIENT LIST
 
獲取連線到伺服器的客戶端連線列表
5 CLIENT GETNAME 
獲取連線的名稱
6 CLIENT PAUSE timeout 
在指定時間內終止執行來自客戶端的命令
7 CLIENT SETNAME connection-name 
設定當前連線的名稱
8 CLUSTER SLOTS 
獲取叢集節點的對映陣列
9 COMMAND 
獲取 Redis 命令詳情陣列
10 COMMAND COUNT 
獲取 Redis 命令總數
11 COMMAND GETKEYS 
獲取給定命令的所有鍵
12 TIME 
返回當前伺服器時間
13 COMMAND INFO command-name [command-name ...] 
獲取指定 Redis 命令描述的陣列
14 CONFIG GET parameter 
獲取指定配置引數的值
15 CONFIG REWRITE 
對啟動 Redis 伺服器時所指定的 redis.conf 配置檔案進行改寫
16 CONFIG SET parameter value 
修改 redis 配置引數,無需重啟
17 CONFIG RESETSTAT 
重置 INFO 命令中的某些統計資料
18 DBSIZE 
返回當前資料庫的 key 的數量
19 DEBUG OBJECT key 
獲取 key 的除錯資訊
20 DEBUG SEGFAULT 
讓 Redis 服務崩潰
21 FLUSHALL 
刪除所有資料庫的所有key
22 FLUSHDB 
刪除當前資料庫的所有key
23 INFO [section] 
獲取 Redis 伺服器的各種資訊和統計數值
24 LASTSAVE 
返回最近一次 Redis 成功將資料儲存到磁碟上的時間,以 UNIX 時間戳格式表示
25 MONITOR 
實時打印出 Redis 伺服器接收到的命令,除錯用
26 ROLE 
返回主從例項所屬的角色
27 SAVE 
非同步儲存資料到硬碟
28 SHUTDOWN [NOSAVE] [SAVE] 
非同步儲存資料到硬碟,並關閉伺服器
29 SLAVEOF host port 
將當前伺服器轉變為指定伺服器的從屬伺服器(slave server)
30 SLOWLOG subcommand [argument] 
管理 redis 的慢日誌
31 SYNC 
用於複製功能(replication)的內部命令

 

三、Redis Sentinal 操作

  登入Sentinal的方式和登入Redis的方式一樣:

redis-cli -h <hostname> -p <port>

  Sentinal的命令有幾個,掌握重要的即可:

  • ping:返回 PONG 。
  • sentinel masters :列出所有被監視的主伺服器,以及這些主伺服器的當前狀態。
  • sentinel master <master name>:特定主伺服器的當前狀態。
  • sentinel slaves <master name>:列出給定主伺服器的所有從伺服器,以及這些從伺服器的當前狀態。
  • sentinel sentinels <master name>:顯示監視指定主伺服器的所有sentinel和他們的狀態。
  • sentinel get-master-addr-by-name <master name> : 返回給定名字的主伺服器的 IP 地址和埠號。 如果這個主伺服器正在執行故障轉移操作, 或者針對這個主伺服器的故障轉移操作已經完成, 那麼這個命令返回新的主伺服器的 IP 地址和埠號。
  • sentinel reset <pattern>: 重置所有名字和給定模式 pattern 相匹配的主伺服器。 pattern 引數是一個 Glob 風格的模式。 重置操作清楚主伺服器目前的所有狀態, 包括正在執行中的故障轉移, 並移除目前已經發現和關聯的, 主伺服器的所有從伺服器和 Sentinel 。
  • sentinel failover : 當主伺服器失效時, 在不詢問其他 Sentinel 意見的情況下, 強制開始一次自動故障遷移 (不過發起故障轉移的 Sentinel 會向其他 Sentinel 傳送一個新的配置,其他 Sentinel 會根據這個配置進行相應的更新)。

四、Redis cluster 操作

  登入cluster後,主要命令如下:

  • CLUSTER INFO 列印叢集的資訊
  • CLUSTER NODES 列出叢集當前已知的所有節點(node),以及這些節點的相關資訊。
  • CLUSTER RESET reset
  • CLUSTER SAVECONFIG 強制節點儲存叢集當前狀態到磁碟上。
  • CLUSTER SLOTS 獲得slot在節點上的對映關係
  • CLUSTER MEET <ip> <port> 將 ip 和 port 所指定的節點新增到叢集當中,讓它成為叢集的一份子。
  • CLUSTER FORGET <node_id> 從叢集中移除 node_id 指定的節點。
  • CLUSTER REPLICATE <node_id> 將當前節點設定為 node_id 指定的節點的從節點。
  • CLUSTER SLAVES <node_id> 列出該slave節點的master節點
  • CLUSTER ADDSLOTS <slot> [slot ...] 將一個或多個槽(slot)指派(assign)給當前節點。
  • CLUSTER DELSLOTS <slot> [slot ...] 移除一個或多個槽對當前節點的指派。
  • CLUSTER FLUSHSLOTS 移除指派給當前節點的所有槽,讓當前節點變成一個沒有指派任何槽的節點。
  • CLUSTER SETSLOT <slot> NODE <node_id> 將槽 slot 指派給 node_id 指定的節點,如果槽已經指派給另一個節點,那麼先讓另一個節點刪除該槽>,然後再進行指派。
  • CLUSTER SETSLOT <slot> MIGRATING <node_id> 將本節點的槽 slot 遷移到 node_id 指定的節點中。
  • CLUSTER SETSLOT <slot> IMPORTING <node_id> 從 node_id 指定的節點中匯入槽 slot 到本節點。
  • CLUSTER SETSLOT <slot> STABLE 取消對槽 slot 的匯入(import)或者遷移(migrate)。
  • CLUSTER KEYSLOT <key> 計算鍵 key 應該被放置在哪個槽上。
  • CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的鍵值對數量。
  • CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 個 slot 槽中的鍵
  • READONLY 在叢集中的salve節點開啟只讀模式
  • READWRITE 禁止讀取請求跳轉到叢集中的salve節點上