## Redis 服務器命令
#### BGREWRITEAOF
異步執行一個 AOF(AppendOnly File) 文件重寫操作
#### BGSAVE
在后臺異步保存當前數據庫的數據到磁盤
Redis Bgsave 命令用于在后臺異步保存當前數據庫的數據到磁盤。
BGSAVE 命令執行之后立即返回 OK ,然后 Redis fork 出一個新子進程,原來的 Redis 進程(父進程)繼續處理客戶端請求,而子進程則負責將數據保存到磁盤,然后退出。
#### CLIENT KILL
~~~
# 列出所有已連接客戶端
redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43501 fd=5 age=10 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
# 殺死當前客戶端的連接
redis 127.0.0.1:6379> CLIENT KILL 127.0.0.1:43501
OK
# 之前的連接已經被關閉,CLI 客戶端又重新建立了連接
# 之前的端口是 43501 ,現在是 43504
redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:43504 fd=5 age=0 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=32768 obl=0 oll=0 omem=0 events=r cmd=client
~~~
#### 連接名字操作
~~~
# 新連接默認沒有名字
redis 127.0.0.1:6379> CLIENT GETNAME
(nil)
# 設置名字
redis 127.0.0.1:6379> CLIENT SETNAME hello-world-connection
OK
# 返回名字
redis 127.0.0.1:6379> CLIENT GETNAME
"hello-world-connection"
# 在客戶端列表中查看
redis 127.0.0.1:6379> CLIENT LIST
addr=127.0.0.1:36851
fd=5
name=hello-world-connection # <- 名字
age=51
...
# 清除名字
redis 127.0.0.1:6379> CLIENT SETNAME # 只用空格是不行的!
(error) ERR Syntax error, try CLIENT (LIST | KILL ip:port)
redis 127.0.0.1:6379> CLIENT SETNAME "" # 必須雙引號顯示包圍
OK
redis 127.0.0.1:6379> CLIENT GETNAME # 清除完畢
(nil)
~~~
#### Redis Client Slots 命令用于當前的集群狀態,以數組形式展示。
~~~
redis 127.0.0.1:6379> cluster slots
1) 1) (integer) 0
2) (integer) 4095
3) 1) "127.0.0.1"
2) (integer) 7000
4) 1) "127.0.0.1"
2) (integer) 7004
2) 1) (integer) 12288
2) (integer) 16383
3) 1) "127.0.0.1"
2) (integer) 7003
4) 1) "127.0.0.1"
2) (integer) 7007
3) 1) (integer) 4096
2) (integer) 8191
3) 1) "127.0.0.1"
2) (integer) 7001
4) 1) "127.0.0.1"
2) (integer) 7005
4) 1) (integer) 8192
2) (integer) 12287
3) 1) "127.0.0.1"
2) (integer) 7002
4) 1) "127.0.0.1"
2) (integer) 7006
~~~
#### 修改配置
Redis Config rewrite 命令對啟動 Redis 服務器時所指定的 redis.conf 配置文件進行改寫。
CONFIG SET 命令可以對服務器的當前配置進行修改, 而修改后的配置可能和 redis.conf 文件中所描述的配置不一樣, CONFIG REWRITE 的作用就是通過盡可能少的修改, 將服務器當前所使用的配置記錄到 redis.conf 文件中。
#### 語法
`redis 127.0.0.1:6379> CONFIG REWRITE parameter`
~~~
127.0.0.1:6379> CONFIG GET appendonly # appendonly 處于關閉狀態
1) "appendonly"
2) "no"
127.0.0.1:6379> CONFIG SET appendonly yes # 打開 appendonly
OK
127.0.0.1:6379> CONFIG GET appendonly
1) "appendonly"
2) "yes"
127.0.0.1:6379> CONFIG REWRITE # 將 appendonly 的修改寫入到 redis.conf 中
OK
~~~
#### DBSIZE
返回當前數據庫的 key 的數量
~~~
redis 127.0.0.1:6379> DBSIZE
(integer) 5
redis 127.0.0.1:6379> SET new_key "hello_moto" # 增加一個 key 試試
OK
redis 127.0.0.1:6379> DBSIZE
(integer) 6
~~~
#### FLUSHALL
刪除所有數據庫的所有key
~~~
redis 127.0.0.1:6379> DBSIZE # 0 號數據庫的 key 數量
(integer) 9
redis 127.0.0.1:6379> SELECT 1 # 切換到 1 號數據庫
OK
redis 127.0.0.1:6379> DBSIZE # 1 號數據庫的 key 數量
(integer) 6
redis 127.0.0.1:6379> flushall # 清空所有數據庫的所有 key
OK
redis 127.0.0.1:6379> DBSIZE # 不但 1 號數據庫被清空了
(integer) 0
redis 127.0.0.1:6379> SELECT 0 # 0 號數據庫(以及其他所有數據庫)也一樣
OK
redis 127.0.0.1:6379> DBSIZE
(integer) 0
~~~
#### FLUSHDB
刪除當前數據庫的所有key
~~~
redis 127.0.0.1:6379> DBSIZE # 清空前的 key 數量
(integer) 4
redis 127.0.0.1:6379> FLUSHDB
OK
redis 127.0.0.1:6379> DBSIZE # 清空后的 key 數量
(integer) 0
~~~
ROLE
返回主從實例所屬的角色
Redis Slaveof 命令可以將當前服務器轉變為指定服務器的從屬服務器(slave server)。
如果當前服務器已經是某個主服務器(master server)的從屬服務器,那么執行 SLAVEOF host port 將使當前服務器停止對舊主服務器的同步,丟棄舊數據集,轉而開始對新主服務器進行同步。
另外,對一個從屬服務器執行命令 SLAVEOF NO ONE 將使得這個從屬服務器關閉復制功能,并從從屬服務器轉變回主服務器,原來同步所得的數據集不會被丟棄。
利用『 SLAVEOF NO ONE 不會丟棄同步所得數據集』這個特性,可以在主服務器失敗的時候,將從屬服務器用作新的主服務器,從而實現無間斷運行。
~~~
redis 127.0.0.1:6379> SLAVEOF 127.0.0.1 6379
OK
redis 127.0.0.1:6379> SLAVEOF NO ONE
OK
~~~
#### SELECT
選擇數據庫
#### KEYS *
獲取數據庫中的所有keys