Ⅰ redis 如何判斷是集群還是主從
redis主從復制
redis主從配置比較簡單,基本就是在從節點配置文件加上:slaveof 192.168.33.130 6379
主要是通過master server持久化的rdb文件實現的。master server 先mp出內存快照文件,然後將rdb文件傳給slave server,slave server 根據rdb文件重建內存表。
redis復制過程如下:
1、slave server啟動連接到master server之後,salve server主動發送SYNC命令給master server
2、master server接受SYNC命令之後,判斷,是否有正在進行內存快照的子進程,如果有,則等待其結束,否則,fork一個子進程,子進程把內存數據保存為文件,並發送給slave server
3、master server子進程進程做數據快照時,父進程可以繼續接收client端請求寫數據,此時,父進程把新寫入的數據放到待發送緩存隊列中
4、slave server 接收內存快照文件之後,清空內存數據,根據接收的快照文件,重建內存表數據結構
5、master server把快照文件發送完畢之後,發送緩存隊列中保存的子進程快照期間改變的數據給slave server,slave server做相同處理,保存數據一致性
6、master server 後續接收的數據,都會通過步驟1建立的連接,把數據發送到slave server
需要注意:slave server如果因為網路或其他原因斷與master server的連接,當slave server重新連接時,需要重新獲取master server的內存快照文件,slave server的數據會自動全部清空,然後再重新建立內存表,這樣會讓slave server 啟動恢復服務比較慢,同時也給master server
Ⅱ redis集群 有沒有命令可以直接看所有節點的所有數據
在分布式系統中,各個進程(本文使用進程來描述分布式系統中的運行主體,它們可以在同一個物理節點上也可以在不同的物理節點上)相互之間通常是需要協調進行運作的,有時是不同進程所處理的數據有依賴關系,必須按照一定的次序進行處理
Ⅲ redis集群 可以用scan嗎
可以,不過要拆成單節點scan,只scan master節點,過濾slever
Ⅳ redis集群如何解決重啟不了的問題
使用redis-cli連接上redis其中一台
redis-cli -c -h xxx -p 7001
輸入cluster info查看當前集群的狀態
Ⅳ redis cluster命令cluster nodes怎麼用
redis cluster配置好,並運行一段時間後,我們想添加節點,或者刪除節點,該怎麼辦呢。
一,redis cluster命令行
查看復制列印?
//集群(cluster)
CLUSTER INFO 列印集群的信息
CLUSTER NODES 列出集群當前已知的所有節點(node),以及這些節點的相關信息。
//節點(node)
CLUSTER MEET <ip> <port> 將 ip 和 port 所指定的節點添加到集群當中,讓它成為集群的一份子。
CLUSTER FORGET <node_id> 從集群中移除 node_id 指定的節點。
CLUSTER REPLICATE <node_id> 將當前節點設置為 node_id 指定的節點的從節點。
CLUSTER SAVECONFIG 將節點的配置文件保存到硬碟裡面。
//槽(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)。
//鍵 (key)
CLUSTER KEYSLOT <key> 計算鍵 key 應該被放置在哪個槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的鍵值對數量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 個 slot 槽中的鍵。
這些命令是集群所獨有的。執行上述命令要先登錄
查看復制列印?
[root@manage redis]# redis-cli -c -p 6382 -h 192.168.10.220 //登錄
192.168.10.220:6382> 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:8
cluster_my_epoch:4
cluster_stats_messages_sent:82753
cluster_stats_messages_received:82754
二,添加節點
1,新配置二個測試節點
查看復制列印?
# cd /etc/redis
//新增配置
# cp redis-6379.conf redis-6378.conf && sed -i "s/6379/6378/g" redis-6378.conf
# cp redis-6382.conf redis-6385.conf && sed -i "s/6382/6385/g" redis-6385.conf
//啟動
# redis-server /etc/redis/redis-6385.conf > /var/log/redis/redis-6385.log 2>&1 &
# redis-server /etc/redis/redis-6378.conf > /var/log/redis/redis-6378.log 2>&1 &
2,添加主節點
# redis-trib.rb add-node 192.168.10.219:6378 192.168.10.219:6379
注釋:
192.168.10.219:6378是新增的節點
192.168.10.219:6379集群任一個舊節點
3,添加從節點
# redis-trib.rb add-node --slave --master-id 192.168.10.220:6385 192.168.10.219:6379
注釋:
--slave,表示添加的是從節點
--master-id ,主節點的node id,在這里是前面新添加的6378的node id
192.168.10.220:6385,新節點
192.168.10.219:6379集群任一個舊節點
4,重新分配slot
查看復制列印?
# redis-trib.rb reshard 192.168.10.219:6378 //下面是主要過程
How many slots do you want to move (from 1 to 16384)? 1000 //設置slot數1000
What is the receiving node ID? //新節點node id
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:all //表示全部節點重新洗牌
Do you want to proceed with the proposed reshard plan (yes/no)? yes //確認重新分
新增加的主節點,是沒有slots的,
Ⅵ 如何查看redis 集群的部署
什麼是Redis sharding集群
Redis(redis.io)作為最流行的KV資料庫,很長一段時間都是單機運行,關於如何實現Redis的數據在多個節點上的分布,在Redis3.0出來之前,有很多第三方的方案。 :
Client hash
這是最簡單的實現,通過在客戶端利用一致性hash演算法,將數據分布到不同節點。這種方法的缺點非常明顯,缺少故障自動failover能力,並且在擴容時數據分布的搬遷,也比較費勁。
代理模式
一個是Redis官方推薦的Twemproxy,是由twitter公司開發;
另一個是國內豌豆莢開源的codis;
代理模式最大的好處是仍然使用redis單機的sdk進行開發,維護簡單。
Ⅶ 如何查看redis cluster
Redis Cluster設計要點:
架構:無中心
Redis Cluster採用無中心結構,每個節點都保存數據和整個集群的狀態
每個節點都和其他所有節點連接,這些連接保持活躍
使用gossip協議傳播信息以及發現新節點
node不作為client請求的代理,client根據node返回的錯誤信息重定向請求
數據分布:預分桶
預分好16384個桶,根據 CRC16(key) mod 16384的值,決定將一個key放到哪個桶中
每個Redis物理結點負責一部分桶的管理,當發生Redis節點的增減時,調整桶的分布即可
例如,假設Redis Cluster三個節點A/B/C,則
Node A 包含桶的編號可以為: 0 到 5500.
Node B 包含桶的編號可以為: 5500 到 11000.
Node C包含桶的編號可以為: 11001 到 16384.
當發生Redis節點的增減時,調整桶的分布即可。
預分桶的方案介於「硬Hash」和「一致性Hash」之間,犧牲了一定的靈活性,但相比「一致性Hash「,數據的管理成本大大降低
可用性:Master-Slave
為了保證服務的可用性,Redis Cluster採取的方案是的Master-Slave
每個Redis Node可以有一個或者多個Slave。當Master掛掉時,選舉一個Slave形成新的Master
一個Redis Node包含一定量的桶,當這些桶對應的Master和Slave都掛掉時,這部分桶對應的數據不可用
寫
Redis Cluster使用非同步復制
一個完整的寫操作步驟:
1.client寫數據到master
2.master告訴client "ok"
3.master傳播更新到slave
存在數據丟失的風險:
1. 上述寫步驟1)和2)成功後,master crash,而此時數據還沒有傳播到slave
2. 由於分區導致同時存在兩個master,client向舊的master寫入了數據。
當然,由於Redis Cluster存在超時及故障恢復機制,第2個風險基本上不可能發生
數據遷移
Redis Cluster支持在線增/減節點。
基於桶的數據分布方式大大降低了遷移成本,只需將數據桶從一個Redis Node遷移到另一個Redis Node即可完成遷移。
當桶從一個Node A向另一個Node B遷移時,Node A和Node B都會有這個桶,Node A上桶的狀態設置為MIGRATING,Node B上桶的狀態被設置為IMPORTING
當客戶端請求時:
所有在Node A上的請求都將由A來處理,所有不在A上的key都由Node B來處理。同時,Node A上將不會創建新的key
多key操作
當系統從單節點向多節點擴展時,多key的操作總是一個非常難解決的問題,Redis Cluster方案如下:
1. 不支持多key操作
2. 如果一定要使用多key操作,請確保所有的key都在一個node上,具體方法是使用「hash tag」方案
hash tag方案是一種數據分布的例外情況
Ⅷ redis 如何重啟 linux下請輸入命令不要用kill 的方式
1、如果是用apt-get或者yum install安裝的redis,可以直接通過下面的命令停止/啟動/重啟redis:/etc/init.d/redis-server stop/etc/init.d/redis-server start/etc/init.d/redis-server restart
2、如果是通過源碼安裝的redis,則可以通過redis的客戶端程序redis-cli的shutdown命令來重啟redis。
Ⅸ redis 哨兵模式 怎麼查看每個redis 集群的狀態
您好,BRPOP命令接收兩個參數,第一個是鍵名,第二個是超時時間,單位是秒。當超過了此時間仍然沒有獲得新元素的話就會返回nil。上例中超時時間為"0",表示不限制等待的時間,即如果沒有新元素加入列表就會永遠阻塞下去。
當獲得一個元素後BRPOP命令返回兩個值,分別是鍵名和元素值。為了測試BRPOP命令,我們可以打開兩個redis-cli實例,在實例A中:
redis A> BRPOP queue 0
鍵入回車後實例1會處於阻塞狀態,這時在實例B中向queue中加入一個元素:
redis B> LPUSH queue task (integer) 1
在LPUSH命令執行後實例A馬上就返回了結果:
1) "queue" 2) "task"
同時會發現queue中的元素已經被取走:
redis> LLEN queue (integer) 0
除了BRPOP命令外,Redis還提供了BLPOP,和BRPOP的區別在與從隊列取元素時BLPOP會從隊列左邊取。
Ⅹ 華為大數據平台如何查看redis集群埠
華為大數據平台redis集群埠
註:ip為安裝redis的那台伺服器(集群中的其中一台)的ip,password為redis的密碼
集群相關信息查看
1.集群狀態
redis-cli -h ip -p 9379 -a password cluster info
2.集群節點信息
redis-cli -h ip -p 9379 -a password cluster nodes
3.節點內存、cpu、key數量等信息(每個節點都需查看)
redis-cli -h ip -p 9379 -a password info