隨着咱們系統業務量的增加,單機Redis已經不能知足需求了。假設咱們的系統要緩存的數據已經遠遠超出服務器的內存,就須要將這些數據以分片的形式存儲到不一樣的服務器上。node
數據冗餘備份、故障自動轉移、核心解決了單節點併發壓力問題redis
port ${port} #端口 cluster-enabled yes #開啓集羣模式 cluster-config-file nodes-${port}.conf #修改集羣配置文件 cluster-node-timeout 15000 #設置節點超時時間 appendonly yes #設置持久化爲aof模式 appendfilename appendonly-${port}.aof #設置每一個持久化文件名 dbfilename dump-${port}.rdb #快照文件名 pidfile /var/run/redis_${port}.pid #進程文件名 cluster-require-full-coverage yes # bind 0.0.0.0
.redis-server ./redis-${port}.conf
redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1 #參數1表示1主1從 # 7001爲7004的主節點 # 7002爲7005的主節點 # 7003爲7006的主節點
輸入yes後,成功完成集羣配置算法
redis-cli --cluster info 192.168.3.200:7001 # 這裏鏈接任意一個節點均可以
鏈接任意一個節點均可以操做緩存
此時咱們發現,Redis會根據key去進行計算,無論是查詢仍是添加都會分配到對應的槽中bash
redis-server ./redis-7007.conf
redis-cli --cluster add-node 127.0.0.7:7007 127.0.0.1:7001 # 前面的參數表示新增的節點ip:port 後面的參數表示已經存在的集羣節點的ip:port
此時咱們查看節點信息服務器
雖然7007節點已經加入了集羣,可是沒有分配任何的數據槽併發
redis-cli --cluster reshard 192.168.3.200:7001
這裏它會首先提示咱們須要轉移多少個槽,咱們輸入3000app
而後會提示咱們須要哪一個id接收,咱們輸入使用 info 命令看到的7007節點的id 7e37f7ecde1a7bdc434ddc564662e47f3d3875e6分佈式
而後提示咱們從哪些節點分配出這些槽,咱們輸入allui
而後輸入 yes 就能夠完成節點槽的從新分配