Redis學習(六) Redis 基本運維
阿新 • • 發佈:2019-01-06
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節點上