1. 程式人生 > 實用技巧 >Redis——常用命令

Redis——常用命令

一、叢集管理

1、檢視叢集資訊:

cluster info

2、檢視叢集節點:

cluster nodes

3、副本資訊:

info replication

Master:

Slave:

4、將當前節點設定為 node_id 指定的節點的從節點

cluster replicate <node_id>

5、計算鍵 key 應該被放置在哪個槽上

cluster keyslot <key>

6、新增節點

當叢集的壓力比較大時,可以通過動態的擴容提高叢集的寫讀併發能力

# 新增主節點
redis-cli --cluster add-node ip3:7007
ip1:7001

使用add-node新增叢集節點,第一個地址引數為要新增的redis例項地址,第二個引數為叢集中任意一個例項地址,節點會預設被新增為主節點,請注意這個時候新增的主節點與其他的master相比具有兩個特點

  • 它沒有資料,因為它沒有分配雜湊槽
  • 因為它是沒有分配插槽的裝置,所以當從節點想成為主節點時,它不參與選舉過程

新增成功的標識:

# 新增從節點
redis-cli --cluster add-node ip3:7007 ip1:7001 --cluster-slave

上述會把ip3:7007例項作為叢集的從節點加入到叢集中,會挑選擁有從伺服器數量最少的主伺服器,然後把新加入的節點作為該主伺服器的從節點。

7、重新整理叢集

當使用上述方式新增完主節點之後,新增進入的節點為空,並沒有分配任何槽,此時我們需要執行reshard操作,為新新增的主節點分配插槽,已達到分擔叢集壓力,提高併發能力的目的。

  • 1:開啟重新分片(reshard)操作
redis-cli -h ip1 -p 7001 --cluster reshard ip1:7001
  • 2:指定需要重新reshard的slots的個數

  • 3:指定接收這些slots的插槽的目的節點id

  • 4:指定分配這些slots的插槽的源節點id,輸入done為結束符
Source node #1:ca33b3d7a60f8df7b74473f86c11f84df609fa45
Source node #
2:done

8、刪除節點

當系統負載壓力比較小的時候,為了避免耗費資源,可以選擇動態的刪除節點,命令如下所示:

redis-cli -h ip1 -p 7001 --cluster del-node ip1:7001 node-id

使用上述方式刪除節點的時候,當刪除節點為從節點的時候可以直接刪除,當刪除節點為主節點的時候,則必須主節點不為空,即需要把主節點的插槽及插槽中的資料分配給其他的主節點。

9、副本遷移

副本遷移在叢集中的概念,即是在某些場景下,可能需要把一個主伺服器的從節點遷移到另外一個主伺服器上去,這種情況一般用在多從節點的情況下,為了提高系統的高可用性而進行的操作, 例如當有三個主伺服器的情況下,其中一個主伺服器有三個從節點,一個主伺服器有兩個從節點,一個主伺服器只有一個從節點,如果一主一從這一對例項同時發生故障,將導致叢集不可用, 這種情況下,可以把一主三從這一對的例項的一個從節點移動到一主一從這一對例項上,即可避免上述情況,提高了系統的可用性, 副本遷移的程式碼如下所示:
# 在相應的從節點上執行
cluster replicate <master-node-id>

10、加入或移除叢集

cluster meet <ip> <port>  將 ip 和 port 所指定的節點新增到叢集當中,讓它成為叢集的一份子
cluster forget <node_id> 從叢集中移除 node_id 指定的節點。

11、槽(slot)

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)。

12、鍵

cluster keyslot <key> :計算鍵 key 應該被放置在哪個槽上。
cluster countkeysinslot <slot> :返回槽 slot 目前包含的鍵值對數量。
cluster getkeysinslot <slot> <count> :返回 count 個 slot 槽中的鍵 。