redis 5.0.3版本的講解、叢集搭建

2020-08-13 10:06:43

給大家推薦一個完整可行的部落格,講解redis 5.0版本的搭建,個人覺得講挺好:https://www.cnblogs.com/zy-303/p/10273167.html

以下是將原文複製過來的,防止原創刪帖(請點上面鏈接看原創作品,以下內容缺少圖片和排版,不易理解)

redis 5.0.3 講解、叢集搭建
目錄

一 、redis 介紹
1.redis 概念:
2.Redis在專案中的應用場景
3.數據型別
4.Redis數據型別應用場景
5 優勢和缺點
二、安裝redis
1.原始碼安裝redis
2.通過yum 安裝redis
三 redis 叢集搭建
1 原始碼安裝
2.建立6個Redis組態檔,並設定
3. 啓動節點
4. 啓動叢集
5. 用戶端連線叢集
7 redis 叢集分割區原理

REDIS

回到頂部
一 、redis 介紹
不管你是從事Python、Java、Go、PHP、Ruby等等… Redis都應該是一個比較熟悉的中介軟體。而大部分經常寫業務程式碼的程式設計師,實際工作中或許只用到了set value、get value兩個操作。

1.redis 概念:
Redis是一個開源的底層使用C語言編寫的key-value儲存數據庫。可用於快取、事件發佈訂閱、高速佇列等場景。而且支援豐富的數據型別:string(字串)、hash(雜湊)、list(列表)、set(無序集合)、zset(sorted set:有序集合)

Redis 在3.0版本前只支援單範例模式,雖然支援主從模式、哨兵模式部署來解決單點故障,但是現在網際網路企業動輒大幾百G的數據,可完全是沒法滿足業務的需求,所以,Redis 在 3.0 版本以後就推出了叢集模式。

2.Redis在專案中的應用場景
2.1、快取數據 最常用,對經常需要查詢且變動不是很頻繁的數據 常稱作熱點數據。

2.2、訊息佇列 相當於訊息訂閱系統,比如ActiveMQ、RocketMQ。如果對數據有較高一致性要求時,還是建議使用MQ)

2.3、計數器 比如統計點選率、點贊率,redis具有原子性,可以避免併發問題

2.4、電商網站資訊 大型電商平臺初始化頁面數據的快取。比如去哪兒網購買機票的時候首頁的價格和你點進去的價格會有差異。

2.5、熱點數據 比如新聞網站實時熱點、微博熱搜等,需要頻繁更新。總數據量比較大的時候直接從數據庫查詢會影響效能

3.數據型別
概念 說明
String(字串) string是redis最基本的型別,你可以理解成與Memcached一模一樣的型別,一個key對應一個value。string型別是二進制安全的。意思是redis的string可以包含任何數據。比如jpg圖片或者序列化的物件 。 string型別是Redis最基本的數據型別,一個鍵最大能儲存512MB。
Hash(雜湊) Redis hash 是一個鍵值對集合。Redis hash是一個string型別的field和value的對映表,hash特別適合用於儲存物件。每個 hash 可以儲存 2 32 - 1鍵值對(40多億)。
List(列表) Redis 列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素導列表的頭部(左邊)或者尾部(右邊)。列表最多可儲存 2
32 - 1元素 (4294967295, 每個列表可儲存40多億)。
Set(無序集合) Redis的Set是string型別的無序集合。集合是通過雜湊表實現的,所以新增,刪除,查詢的複雜度都是O(1)。集閤中最大的成員數爲 2* 32 - 1(4294967295, 每個集合可儲存40多億個成員)。
| zset(sorted set:有序集合) | Redis zset 和 set 一樣也是string型別元素的集合,且不允許重複的成員。不同的是每個元素都會關聯一個double型別的分數。redis正是通過分數來爲集閤中的成員進行從小到大的排序。 zset的成員是唯一的,但分數(score)卻可以重複。 |

4.Redis數據型別應用場景
前面提到了Redis支援五種豐富的數據型別,那麼在不同場景下的選擇

String

字串是最常用的數據型別,他能夠儲存任何型別的字串,當然也包括二進制、JSON化的物件、甚至是base64編碼之後的圖片。在Redis中一個字串最大的容量爲512MB,可以說是無所不能了。

Hash

常用作儲存結構化數據、比如論壇系統中可以用來儲存使用者的Id、暱稱、頭像、積分等資訊。如果需要修改其中的資訊,只需要通過Key取出Value進行反序列化修改某一項的值,再序列化儲存到Redis中,Hash結構儲存,由於Hash結構會在單個Hash元素在不足一定數量時進行壓縮儲存,所以可以大量節約記憶體。這一點在String結構裡是不存在的。

List

List的實現爲一個雙向鏈表,即可以支援反向查詢和遍歷,更方便操作,不過帶來了部分額外的記憶體開銷,Redis 內部的很多實現,包括髮送緩衝佇列等也都是用的這個數據結構。另外,可以利用 lrange 命令,做基於 Redis 的分頁功能,效能極佳,使用者體驗好。

Set

set 對外提供的功能與 list 類似是一個列表的功能,特殊之處在於 set 是可以自動排重的,當你需要儲存一個列表數據,又不希望出現重複數據時,這個時候就可以選擇使用set。

Sorted Set

可以按照某個條件的權重進行排序,比如可以通過點選數做出排行榜的數據應用。

5 優勢和缺點
5.1優勢:

複製程式碼
\1. 效能極高– Redis能讀的速度是110000次/s,寫的速度是81000次/s 。

\2. 豐富的數據型別 – Redis支援二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據型別操作。

\3. 原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全並後的原子性執行。

\4. 豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。
複製程式碼

5.2 缺點:

\1、由於是記憶體數據庫,所以單臺機器儲存的數據量是有限的,需要開發者提前預估,需要及時刪除不需要的數據。 \2、當修改Redis的數據之後需要將持久化到硬碟的數據重新加入到內容中,時間比較久,這個時候Redis是無法正常執行的。

5.3對比:Redis與其他key-value儲存有什麼不同

\1. Redis有着更爲複雜的數據結構並且提供對他們的原子性操作,這是一個不同於其他數據庫的進化路徑。Redis的數據型別都是基於基本數據結構的同時對程式設計師透明,無需進行額外的抽象。

\2. Redis執行在記憶體中但是可以持久化到磁碟,所以在對不同數據集進行高速讀寫時需要權衡記憶體,應爲數據量不能大於硬體記憶體。在記憶體數據庫方面的另一個優點是, 相比在磁碟上相同的複雜的數據結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多內部複雜性很強的事情。 同時,在磁碟格式方面他們是緊湊的以追加的方式產生的,因爲他們並不需要進行隨機存取。

回到頂部
二、安裝redis
1.原始碼安裝redis
複製程式碼
#yum -y install gcc

wget http://download.redis.io/releases/redis-5.0.3.tar.gz

tar xzf redis-5.0.3.tar.gz

cd redis-5.0.3

make

//預設埠 6379
複製程式碼

1.1修改redis的組態檔
複製程式碼

pwd

/usr/local/redis/redis-5.0.3

vim redis.conf

daemonize yes //把no 修改爲yes,如果不修改,無法在後台繼續執行
複製程式碼

1.2啓動redis

pwd

/usr/local/redis/redis-5.0.3/src
#./redis-server …/redis.conf

通過用戶端測試

./redis-cli

127.0.0.1:6379> set • value [expiration EX seconds|PX milliseconds] [NX|XX]
[root@LWJ01 src]# ./redis-cli
127.0.0.1:6379> ping //檢視服務是否執行
PONG
127.0.0.1:6379>
1.3設定開機自動啓動
#vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis Server
After=network.target

[Service]
ExecStart=/usr/local/redis/redis-5.0.3/src/redis-server /usr/local/redis/redis-5.0.3/redis.conf --daemonize no
ExecStop=/usr/local/redis/redis-5.0.3/src/redis-cli -p 6379 shutdown
Restart=always

[Install]
WantedBy=multi-user.target

//redis-cli、redis-server和redis.conf檔案的位置根據你實際放置的位置設定,–daemonize no這個參數一定要帶上,即使你組態檔裡設定daemonize的值是yes,不然設定的服務不生效。

systemctl daemon-reload

systemctl start redis.service

systemctl enable redis.service

2.通過yum 安裝redis

yum install redis


下載fedora的epel倉庫

yum install epel-release

2.1 檔案路徑
#pwd
/usr/bin //redis-server redis-cli 都在這個路徑下面 下麪
#pwd
/etc //redis.conf 組態檔的路徑
2.2 啓動服務

systemctl start redis


使用組態檔啓動 redis

redis-server /etc/redis.conf &


檢視進程

ps -ef | grep redis

redis 13782 1 0 10:30 ? 00:00:00 /usr/bin/redis-server 127.0.0.1:6379
root 13813 8097 0 10:38 pts/0 00:00:00 grep --color=auto redis

檢視埠

ss -anpt | grep 6379

LISTEN 0 128 127.0.0.1:6379 : users:((「redis-server」,pid=13782,fd=4))
2.3 用戶端登錄

redis-cli -h 127.0.0.1 -p 6379

redis-cli -h 127.0.0.1 -p 6379 -a 「123456」 //設定後密碼的登錄

127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
2.4 修改組態檔

vim /etc/redis.conf

bind 127.0.0.1 //註釋掉此行,不然只能本地存取 #bind 127.0.0.1
protected-mode yes 保護模式修改爲no #product-mode no
requirepass 123456 修改預設密碼,查詢 requirepass foobared 將 foobared 修改爲你的密碼

2.5 用戶端進行驗證

redis-cli -h 127.0.0.1 -p 6379

127.0.0.1:6379>

然後輸入info,提示必須驗證

輸入使用者名稱密碼 (auth 123456)
#127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> info

通過key * 檢視所有的鍵(因爲還沒有使用,所以是空)
#127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379>
2.6通過桌面用戶端連線redis
redis desktop manager

https://redisdesktop.com/download
(官網 )

github地址:
https://github.com/uglide/RedisDesktopManager/releases

百度網路硬碟:
http://pan.baidu.com/s/1kU8sY3P

2.7 redis 備份和恢復
redis 數據的路徑(其實備份和恢復就是cp)

導出:Redis寫數據時先寫到一個temp檔案中,然後再把temp檔案重新命名爲預定義的檔案,所以即使Redis在執行,也可以直接用cp命令拷貝這個檔案。

恢復:關閉Redis後直接覆蓋掉demo.rdb,然後重新啓動即可。

通過組態檔檢視
#vim /etc/redis.conf
dbfilename dump.rdb
dir var/lib/redis


進行備份:

redis-cli -h 192.168.25.65 -p 6379 -a 「123456」

192.168.25.65:6379> ping
PONG
192.168.25.65:6379> SAVE //該命令將在 redis 安裝目錄中建立dump.rdb檔案。
OK

進行恢復:
192.168.25.65:6379> CONFIG GET dir //命令 CONFIG GET dir 輸出的 redis 備份目錄爲 /var/lib/redis。

  1. 「dir」
  2. 「/var/lib/redis」
    192.168.25.65:6379>

    接下來的操作:
    1.)停止redis服務
    2.)拷貝備份檔案到 /usr/local/redis/bin目錄下
    3.)重新啓動redis服務

回到頂部
三 redis 叢集搭建
簡要說明:

2018年十月 Redis 發佈了穩定版本的 5.0 版本,推出了各種新特性,其中一點是放棄 Ruby的叢集方式,改爲 使用 C語言編寫的 redis-cli的方式,是叢集的構建方式複雜度大大降低。

https://redis.io/topics/cluster-tutorial
Redis官網檢視叢集搭建方式

以下步驟是在一臺 Linux 伺服器上搭建有6個節點的 Redis叢集。(因爲redis 叢集最低6個節點,不然無法建立)

1 原始碼安裝
#yum -y install gcc

wget http://download.redis.io/releases/redis-5.0.3.tar.gz

tar xzf redis-5.0.3.tar.gz

cd redis-5.0.3

make

//預設埠 6379
2.建立6個Redis組態檔,並設定

pwd

/usr/local/redis/redis-5.0.3
#mkdir 6380 6381 6382 6383 6384 6385

然後拷貝原來的組態檔到目錄下,然就在到相應目錄下進行重新命名
#cp redis.conf 6380 mv redis.conf redis-6380.conf
#cp redis.conf 6381 mv redis.conf redis-6381.conf
#cp redis.conf 6382 mv redis.conf redis-6382.conf
#cp redis.conf 6383 mv redis.conf redis-6383.conf
#cp redis.conf 6384 mv redis.conf redis-6384.conf
#cp redis.conf 6385 mv redis.conf redis-6385.conf

修改所有的組態檔 (加埠號的以此類推)
具體修改:
(1)port 6380 #系結埠

(2)bind 192.168.25.64 #定IP也(可以註釋掉,這樣任何桌面用戶端都可以連線了)

(3)dir /usr/local/redis-cluster/3680 #指定檔案存放路徑 ( .rdb .aof nodes-xxxx.conf 這樣的檔案都會在此路徑下)

(4)cluster-enabled yes #啓動叢集模式

(5)cluster-config-file #叢集節點組態檔

(6)daemonize yes #後臺啓動

(7)cluster-node-timeout 5000 #指定叢集節點超時時間

(8)appendonly yes #指定持久化方式

(9)protected-mode no #非保護模式
3. 啓動節點

./src/redis-server 6380/redis-6380.conf

./src/redis-server 6381/redis-6381.conf

./src/redis-server 6382/redis-6382.conf

./src/redis-server 6383/redis-6383.conf

./src/redis-server 6384/redis-6384.conf

./src/redis-server 6385/redis-6385.conf


檢視啓動的節點進程

  1. 啓動叢集
    #./src/redis-cli --cluster create 192.168.25.64:6380 192.168.25.64:6381 192.168.25.64:6382 192.168.25.64:6383 192.168.25.64:6384 192.168.25.64:6385 --cluster-replicas 1
    // --replicas 1 表示我們希望爲叢集中的每個主節點建立一個從節點。(–cluster-replicas 1 命令的意思: 一主一從設定,六個節點就是 三主三從)

  1. 用戶端連線叢集

./redis-cli -c -h 192.168.25.64 -p 6380

192.168.25.64:6380>

檢視叢集資訊
192.168.25.64:6380> cluster info
cluster_state:ok //叢集狀態
cluster_slots_assigned:16384 槽分配
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:7977
cluster_stats_messages_pong_sent:8091
cluster_stats_messages_sent:16068
cluster_stats_messages_ping_received:8086
cluster_stats_messages_pong_received:7977
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:16068
192.168.25.64:6380>

檢視節點資訊
192.168.25.64:6380> cluster nodes
0853d9773fdcdad1bc0174d64990c40c39b4a2c7 192.168.25.64:6384@16384 slave d9da56a8f068d5529a7771addf586d14e14ca888 0 1547453355000 5 connected
d9da56a8f068d5529a7771addf586d14e14ca888 192.168.25.64:6381@16381 master - 0 1547453356838 2 connected 5461-10922
4b8e4fa926486c8ab675b7bf2fe36320657f1eae 192.168.25.64:6380@16380 myself,master - 0 1547453354000 1 connected 0-5460
0e585e6a0f45e293680e7aec052d942d85dd90c3 192.168.25.64:6382@16382 master - 0 1547453356000 3 connected 10923-16383
8d9e75800b6a4cc1d2815fbb8dd0036ecd0221ce 192.168.25.64:6385@16385 slave 0e585e6a0f45e293680e7aec052d942d85dd90c3 0 1547453355837 6 connected
53d3770f2ee72b3548b8a4cb26a23e617f7558bb 192.168.25.64:6383@16383 slave 4b8e4fa926486c8ab675b7bf2fe36320657f1eae 0 1547453356000 4 connected
192.168.25.64:6380>
檢視節點資訊

6 叢集測試

[root@LWJ01 src]# ./redis-cli -c -h 192.168.25.64 -p 6380
192.168.25.64:6380> set name ww
-> Redirected to slot [5798] located at 192.168.25.64:6381
OK
192.168.25.64:6381> set age 20
-> Redirected to slot [741] located at 192.168.25.64:6380
OK
192.168.25.64:6380> get name
-> Redirected to slot [5798] located at 192.168.25.64:6381
「ww」
192.168.25.64:6381> get age
-> Redirected to slot [741] located at 192.168.25.64:6380
「20」
192.168.25.64:6380>

./redis-cli -h 192.168.25.64 -p 6380

192.168.25.64:6380> set name ww
(error) MOVED 5798 192.168.25.64:6381
192.168.25.64:6380> set age 20
OK
192.168.25.64:6380> get name
(error) MOVED 5798 192.168.25.64:6381
192.168.25.64:6380> get age
「20」
192.168.25.64:6380>

可以看到,用戶端連線加-c選項的時候,儲存和提取key的時候不斷在7031和7032之間跳轉,這個稱爲用戶端重定向。之所以發生用戶端重定向,是因爲Redis Cluster中的每個Master節點都會負責一部分的槽(slot),存取的時候都會進行鍵值空間計算定位key對映在哪個槽(slot)上,如果對映的槽(slot)正好是當前Master節點負責則直接存取,否則就跳轉到其他Master節點負的槽(slot)中存取,這個過程對用戶端是透明的。

7 redis 叢集分割區原理
7.1 槽(slot)的基本概念

從上面叢集的簡單操作中,我們已經知道redis存取key的時候,都要定位相應的槽(slot)。

Redis 叢集鍵分佈演算法使用數據分片(sharding)而非一致性雜湊(consistency hashing)來實現: 一個 Redis 叢集包含 16384 個雜湊槽(hash slot), 它們的編號爲0、1、2、3……16382、16383,這個槽是一個邏輯意義上的槽,實際上並不存在。redis中的每個key都屬於這 16384 個雜湊槽的其中一個,存取key時都要進行key->slot的對映計算。

Performing hash slots allocation on 6 nodes…
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.25.64:6383 to 192.168.25.64:6380
Adding replica 192.168.25.64:6384 to 192.168.25.64:6381
Adding replica 192.168.25.64:6385 to 192.168.25.64:6382

從上面資訊可以看出,建立叢集的時候,雜湊槽被分配到了三個主節點上,從節點是沒有雜湊槽的,6380 負責編號爲 0 - 5460,共 5461個slots 、6381 負責編號爲 5461 - 10922 ,共5462個slots、6382負責編號爲 10923 - 16383 共5461個slots

7.2 叢集分割區好處:

redis的叢集分割區,最主要的目的都是在移除、新增一個節點時對已經存在的快取數據的定位影響儘可能的降到最小。redis將雜湊槽分佈到不同節點的做法使得使用者可以很容易地向叢集中新增或者刪除節點, 比如說:

如果使用者將新節點 D 新增到叢集中, 那麼叢集只需要將節點 A 、B 、 C 中的某些槽移動到節點 D 就可以了。

與此類似, 如果使用者要從叢集中移除節點 A , 那麼叢集只需要將節點 A 中的所有雜湊槽移動到節點 B 和節點 C , 然後再移除空白(不包含任何雜湊槽)的節點 A 就可以了。

因爲將一個雜湊槽從一個節點移動到另一個節點不會造成節點阻塞, 所以無論是新增新節點還是移除已存在 節點, 又或者改變某個節點包含的雜湊槽數量, 都不會造成叢集下線,從而保證叢集的可用性。下面 下麪我們就來學習下叢集中節點的增加和刪除。

7.3 新增節點

pwd

/usr/local/redis/redis-5.0.3

mkdir 6386 6388

#cp redis.conf 6386 mv redis.conf redis-6386.conf
#cp redis.conf 6388 mv redis.conf redis-6388.conf
//進入到相應的目錄下重新命名,並進行設定
7.4 啓動新增加的節點

./src/redis-server 6386/redis-6386.conf


進行檢視

ps -ef | grep redis

7.5 新增節點到叢集
#./src/redis-cli --cluster add-node 192.168.25.64:6386 192.168.25.64:6386
#./src/redis-cli --cluster add-node 192.168.25.64:6388 192.168.25.64:6388
格式:
redis-cli --cluster add-node {新節點IP}:{新節點埠} {任意叢集節點IP}:{對應埠} #如果新增叢集中的主節點,則新新增的就是主節點,如果是從節點則是從節點

檢視叢集資訊

./src/redis-cli -c -h 192.168.25.64 -p 6388

192.168.25.64:6386> cluster nodes

或者用這樣可以檢視叢集檢查叢集
#./src/redis-cli --cluster check 192.168.25.64:6380

7.5.1 自定義分配槽
從新增主節點輸出資訊和檢視叢集資訊中可以看出,我們已經成功的向叢集中新增了一個主節點,但是這個主節還沒有成爲真正的主節點,因爲還沒有分配槽(slot),也沒有從節點,現在要給它分配槽(slot)

自定義分配槽(slot)
#./redis-cli --cluster reshard 192.168.25.64:6380

#系統提示要移動多少個配槽(slot),並且配槽(slot)要移動到哪個節點,任意輸入一個數,如1024,再輸入新增節點的ID1ee802b8051761fd26ab688ff9dca95df35ef3c4

#然後提示要從哪幾個節點中移除1024個槽(slot),這裏輸入‘all’表示從所有的主節點中隨機轉移,湊夠1024個雜湊槽,然後就開始從新分配槽(slot)了。從新分配完後再次檢視叢集節點資訊

7.5.2 檢視分配的結果

#./src/redis-cli --cluster check 192.168.25.64:6380

也可以直接檢視叢集key、slot、slave分佈資訊
#./src/redis-cli --cluster info 192.168.25.64:6380

7.5.3 平衡各節點槽數量
現在想要各個節點槽的數量相當,所以要進行平衡

./src/redis-cli --cluster rebalance --cluster-threshold 1 192.168.25.64:6380

檢視結果
#./src/redis-cli --cluster info 192.168.25.64:6380

7.6 指定從節點
檢視節點狀態
#./src/redis-cli -c -h 192.168.25.64 -p 6380

由下圖可以看出 從節點 6383 的主節點是 6380 ,現在要把它變成 主節點6381的從節點,需要登錄 6383用戶端

./src/redis-cli -c -h 192.168.25.64 -p 6383

192.168.25.64:6383> cluster replicate d9da56a8f068d5529a7771addf586d14e14ca888
OK
192.168.25.64:6383>

再次檢視叢集節點資訊
192.168.25.64:6383> cluster nodes

7.7 刪除節點
刪除從節點 6386

./src/redis-cli --cluster del-node 192.168.25.64:6386 9ba935475b55b9792e6ab0de7f974b8df68db11d

Removing node 9ba935475b55b9792e6ab0de7f974b8df68db11d from cluster 192.168.25.64:6386
Sending CLUSTER FORGET messages to the cluster…
SHUTDOWN the node.
[root@LWJ01 redis-5.0.3]#

./src/redis-cli -p 6386 cluster nodes

Could not connect to Redis at 127.0.0.1:6386: Connection refused

./src/redis-cli -p 6385 cluster nodes

通過下圖可以看出從節點6386 已經被刪除

刪除主節點 3681(因爲剛纔刪除的從節點就是6381的從節點,所以此步驟略)
1)如果主節點有從節點,將從節點轉移到其他主節點
2)如果主節點有slot,去掉分配的slot,然後在刪除主節點

#./redis-cli --cluster reshard 192.168.25.64:6380 //取消分配的slot
How many slots do you want to move (from 1 to 16384)? 4096 //被刪除master的所有slot數量
What is the receiving node ID? 5d8ef5a7fbd72ac586bef04fa6de8a88c0671052 //接收6378節點slot的master
Please enter all the source node IDs.
Type ‘all’ to use all the nodes as source nodes for the hash slots.
Type ‘done’ once you entered all the source nodes IDs.
Source node #1:03ccad2ba5dd1e062464bc7590400441fafb63f2 //被刪除master的node-id
Source node #2:done

Do you want to proceed with the proposed reshard plan (yes/no)? yes //取消slot



檢視結果: 6381 的槽已經被取消,分配給了6380

./src/redis-cli --cluster info 192.168.25.64:6380

192.168.25.64:6380 (4b8e4fa9…) -> 0 keys | 8192 slots | 1 slaves.
192.168.25.64:6381 (d9da56a8…) -> 0 keys | 0 slots | 0 slaves.
192.168.25.64:6382 (0e585e6a…) -> 0 keys | 4096 slots | 1 slaves.
192.168.25.64:6388 (1ee802b8…) -> 3 keys | 4096 slots | 1 slaves.
[OK] 3 keys in 4 masters.
0.00 keys per slot on average.

刪除 6381

./src/redis-cli --cluster del-node 192.168.25.64:6381 d9da56a8f068d5529a7771addf586d14e14ca888

Removing node d9da56a8f068d5529a7771addf586d14e14ca888 from cluster 192.168.25.64:6381
Sending CLUSTER FORGET messages to the cluster…
SHUTDOWN the node.
[root@LWJ01 redis-5.0.3]#

檢視結果:

./src/redis-cli --cluster info 192.168.25.64:6380

192.168.25.64:6380 (4b8e4fa9…) -> 0 keys | 8192 slots | 1 slaves.
192.168.25.64:6382 (0e585e6a…) -> 0 keys | 4096 slots | 1 slaves.
192.168.25.64:6388 (1ee802b8…) -> 3 keys | 4096 slots | 1 slaves.
[OK] 3 keys in 3 masters.
0.00 keys per slot on average.
[root@LWJ01 redis-5.0.3]#

想法決定行動,行動決定結果。 成功是努力的結晶,只有努力纔會有成功。
分類: Linux
好文要頂 關注我 收藏該文
LWJ303
關注 - 11
粉絲 - 2
+加關注
40
« 上一篇: 聯想伺服器設定 RAID
» 下一篇: Oracle 審計測試與總結
posted @ 2019-01-15 17:30 LWJ303 閱讀(5960) 評論(1) 編輯 收藏