上一篇 <<<Linux環(huán)境下安裝單機Redis
下一篇 >>>Redis Cluster如何動態(tài)擴容與縮容
安裝redis之前需要安裝的工具包信息
1暮胧、安裝ruby
yum install ruby
yum install rubygems
2卦尊、安裝ruby redis工具包包
gem install redis-3.3.3.gem
無法直接安裝的話泡仗,就先下載后上傳到服務(wù)器,然后執(zhí)行下面這句話
gem install -l ./redis-3.3.3.gem
1.redis多目錄創(chuàng)建
mkdir rediscluster
cd rediscluster/
mkdir redis7000
mkdir redis7001
mkdir redis7002
mkdir redis7003
mkdir redis7004
mkdir redis7005
2.redis.conf配置
每個配置文件內(nèi)容:
daemonize yes #后臺啟動
protected-mode no ; ## 允許外部訪問
port 7005 #修改端口號泌类,從7000到7005
cluster-enabled yes #開啟cluster,去掉注釋
cluster-config-file 7000nodes.conf #自動生成
cluster-node-timeout 15000 #節(jié)點通信時間
logfile /usr/rediscluster/redis7005/redis.log
dbfilename 7000dump.rdb #做偽集群的時候差凹,一定要修改rdb文件的名字尸疆,如果aof也開的話也需要修改,否則擴容的時候會出現(xiàn)提示說新增擴容節(jié)點存在數(shù)據(jù)硼被,需要先刪除數(shù)據(jù)的提示示损。
[ERR] Node 125.124.6.0:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
3.啟動redis
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7000/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7001/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7002/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7003/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7004/redis.conf
/usr/local/redis/bin/redis-server /usr/rediscluster/redis7005/redis.conf
此時若直接設(shè)置數(shù)據(jù)時,會報卡槽未分配的cuow
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 7000
set jarye 123
(error) CLUSTERDOWN Hash slot not served 說明沒有分配hash槽
4.創(chuàng)建集群模式并分配卡槽
/usr/local/redis/bin/redis-cli --cluster create 10.211.55.16:7000 10.211.55.16:7001 10.211.55.16:7002 10.211.55.16:7003 10.211.55.16:7004 10.211.55.16:7005 --cluster-replicas 1 (建議最好使用服務(wù)器的ip地址搭建嚷硫,否則客戶端連接重定向會到當(dāng)前url)
master才有卡槽信息:
非集群模式訪問會提示跳轉(zhuǎn)到對應(yīng)的卡槽
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 7000
修改為Redis的集群方式連接可自動重定向卡槽
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 7000 –c
Cluster卡槽使用注意事項
a检访、卡槽一旦設(shè)置好后始鱼,后續(xù)只要啟動redis,不用重新分配卡槽
b脆贵、從節(jié)點沒有卡槽医清,默認(rèn)不分擔(dān)讀請求的、只作備份和故障轉(zhuǎn)移用
c卖氨、主卡槽宕機会烙,從卡槽自動上位
客戶端對接說明
a、如果使用jedis鏈接筒捺,則需要同時配置多個IP和端口持搜,且內(nèi)部不能自動切換到對應(yīng)的卡槽,需要手動設(shè)置焙矛,所以不建議使用
b、JedisCluster實例時可以只配置一對IP和端口残腌,內(nèi)部會自動尋址找到所有信息
其他:從節(jié)點不能讀取數(shù)據(jù)的問題
原因:Redis Cluster集群中的從節(jié)點村斟,官方默認(rèn)設(shè)置的是不分擔(dān)讀請求的、只作備份和故障轉(zhuǎn)移用,當(dāng)有請求讀向從節(jié)點時抛猫,會被重定向?qū)?yīng)的主節(jié)點來處理
解決辦法:在get數(shù)據(jù)之前先使用命令readonly,這個readonly告訴 Redis Cluster 從節(jié)點客戶端愿意讀取可能過時的數(shù)據(jù)并且對寫請求不感興趣蟆盹。
推薦閱讀:
<<<分布式緩存與本地緩存的區(qū)別
<<<Ehcache基礎(chǔ)知識
<<<SpringBoot整合Ehcache
<<<Redis的5種數(shù)據(jù)類型
<<<Redis存放實體對象的方式及區(qū)別
<<<Redis的應(yīng)用場景匯總
<<<Redis高效及線程安全的真正原因
<<<Redis為啥要分為16個庫
<<<RDB和AOF持久化方式的區(qū)別
<<<Redis與數(shù)據(jù)庫的一致性解決方案
<<<SpringBoot整合Redis的注解版本完成數(shù)據(jù)緩存
<<<Redis的淘汰策略
<<<Redis的事務(wù)操作(Mult和Watch)知識點
<<<Redis的過期機制使用場景示例
<<<Redis實現(xiàn)分布式鎖的原理分析
<<<Redis分布式鎖的實現(xiàn)代碼示例
<<<使用Redisson工具實現(xiàn)分布式鎖
<<<Redis集群模式之主從復(fù)制原理及存在的缺陷
<<<Redis集群模式之哨兵模式
<<<Redis集群模式之Cluster去中心化分片集群
<<<Linux環(huán)境下安裝單機Redis
<<<Redis Cluster如何動態(tài)擴容與縮容
<<<Redis Cluster主從節(jié)點自動切換
<<<Redis集群模式的類型和缺陷匯總
<<<Redis緩存的穿透、擊穿和雪崩效應(yīng)
<<<Redis解決穿透擊穿問題時使用的布隆過濾器知識點
<<<Redis與MySQL的數(shù)據(jù)同步解決方案
<<<阿里云的Canal框架實現(xiàn)Redis與Mysql同步原理及代碼示例
<<<阿里云的Canal框架配置
<<<Redis官方提出的redlock分布式鎖
<<<Redis的調(diào)優(yōu)設(shè)置
<<<Redis常見問題匯總