上一篇 <<<Linux环境下安装单机Redis
下一篇 >>>Redis Cluster如何动态扩容与缩容
安装redis之前需要安装的工具包信息
1、安装ruby
yum install ruby
yum install rubygems
2、安装ruby redis工具包包
gem install redis-3.3.3.gem
无法直接安装的话,就先下载后上传到服务器,然后执行下面这句话
gem install -l ./redis-3.3.3.gem
1.redis多目录创建
mkdir rediscluster
cd rediscluster/
mkdir redis7000
mkdir redis7001
mkdir redis7002
mkdir redis7003
mkdir redis7004
mkdir redis7005
2.redis.conf配置
每个配置文件内容:
daemonize yes #后台启动
protected-mode no ; ## 允许外部访问
port 7005 #修改端口号,从7000到7005
cluster-enabled yes #开启cluster,去掉注释
cluster-config-file 7000nodes.conf #自动生成
cluster-node-timeout 15000 #节点通信时间
logfile /usr/rediscluster/redis7005/redis.log
dbfilename 7000dump.rdb #做伪集群的时候,一定要修改rdb文件的名字,如果aof也开的话也需要修改,否则扩容的时候会出现提示说新增扩容节点存在数据,需要先删除数据的提示。
[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
此时若直接设置数据时,会报卡槽未分配的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.创建集群模式并分配卡槽
/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 (建议最好使用服务器的ip地址搭建,否则客户端连接重定向会到当前url)
master才有卡槽信息:
非集群模式访问会提示跳转到对应的卡槽
/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、卡槽一旦设置好后,后续只要启动redis,不用重新分配卡槽
b、从节点没有卡槽,默认不分担读请求的、只作备份和故障转移用
c、主卡槽宕机,从卡槽自动上位
客户端对接说明
a、如果使用jedis链接,则需要同时配置多个IP和端口,且内部不能自动切换到对应的卡槽,需要手动设置,所以不建议使用
b、JedisCluster实例时可以只配置一对IP和端口,内部会自动寻址找到所有信息
其他:从节点不能读取数据的问题
原因:Redis Cluster集群中的从节点,官方默认设置的是不分担读请求的、只作备份和故障转移用,当有请求读向从节点时,会被重定向对应的主节点来处理
解决办法:在get数据之前先使用命令readonly,这个readonly告诉 Redis Cluster 从节点客户端愿意读取可能过时的数据并且对写请求不感兴趣。
推荐阅读:
<<<分布式缓存与本地缓存的区别
<<<Ehcache基础知识
<<<SpringBoot整合Ehcache
<<<Redis的5种数据类型
<<<Redis存放实体对象的方式及区别
<<<Redis的应用场景汇总
<<<Redis高效及线程安全的真正原因
<<<Redis为啥要分为16个库
<<<RDB和AOF持久化方式的区别
<<<Redis与数据库的一致性解决方案
<<<SpringBoot整合Redis的注解版本完成数据缓存
<<<Redis的淘汰策略
<<<Redis的事务操作(Mult和Watch)知识点
<<<Redis的过期机制使用场景示例
<<<Redis实现分布式锁的原理分析
<<<Redis分布式锁的实现代码示例
<<<使用Redisson工具实现分布式锁
<<<Redis集群模式之主从复制原理及存在的缺陷
<<<Redis集群模式之哨兵模式
<<<Redis集群模式之Cluster去中心化分片集群
<<<Linux环境下安装单机Redis
<<<Redis Cluster如何动态扩容与缩容
<<<Redis Cluster主从节点自动切换
<<<Redis集群模式的类型和缺陷汇总
<<<Redis缓存的穿透、击穿和雪崩效应
<<<Redis解决穿透击穿问题时使用的布隆过滤器知识点
<<<Redis与MySQL的数据同步解决方案
<<<阿里云的Canal框架实现Redis与Mysql同步原理及代码示例
<<<阿里云的Canal框架配置
<<<Redis官方提出的redlock分布式锁
<<<Redis的调优设置
<<<Redis常见问题汇总