备注:图片因为格式都没有显示,本身是都有的,这里的IP 是随便写了个10.168.0.0代替所有需要用的IP。
Redis集群介绍
Redis真的是一备注:图片因为格式都没有显示,本身是都有的,这里的IP 是随便写了个10.168.0.0代替所有需要用的IP。个优秀的技术,它是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis最大的特性是它会将所有数据都放在内存中,所以读写速度性能非常好。Redis是基于内存进行操作的,性能较高,可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。
网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,需要快速响应,前端发送请求、后端和mysql数据库交互,进行sql查询操作,读写比较慢,这时候引入Redis ,把从mysql 的数据缓存到Redis 中,下次读取时候性能就会提高;当然,它也支持将内存中的数据以快照和日志的形式持久化到硬盘,这样即使在断电、机器故障等异常情况发生时数据也不会丢失,Redis能从硬盘中恢复快照数据到内存中。
Redis 发布了稳定版本的 5.0 版本,放弃 Ruby的集群方式,改用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低。Redis-Cluster集群采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。
为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。
redis-cluster投票:容错,投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉。
集群中至少应该有奇数个节点,所以至少有三个节点,每个节点至少有一个备份节点,所以下面使用6节点(主节点、备份节点由redis-cluster集群确定)。6个节点分布在3台机器上,采用三主三从的模式。比如说6个节点分布到3台机器上,redis在建立集群时为自动的将主从节点进行不同机器的分配。
参考文档:
https://www.jianshu.com/p/d5ca031289ad
https://blog.csdn.net/zhanaolu4821/article/details/95060198
安装
一:下载源码redis5.0.0并解压编译
基础配置(每台都相同)
cd /opt/
wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar xzf redis-5.0.0.tar.gz
mv redis-5.0.0 /data/
cd /data/redis-5.0.0/
make
make install
创建集群目录及相应目录
mkdir -p /data/{10000,10001}
mkdir -p /data /{10002,10003}
mkdir -p /data /{10004,10005}
复制配置文件到各个目录
cp /data/redis-5.0.0/redis.conf /data /10000/
cp /data/redis-5.0.0/redis.conf /data /10001/
cp /data/redis-5.0.0/redis.conf /data /10002/
cp /data/redis-5.0.0/redis.conf /data /10003/
cp /data/redis-5.0.0/redis.conf /data /10004/
cp /data/redis-5.0.0/redis.conf /data /10005/
修改配置文件
bind 10.40.0.0 #这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了。
protected-mode yes #非保护模式
port 10000 #修改端口
dir /data/10000
cluster-enabled yes #设置启用集群模式
cluster-config-file /data/10000/nodes.conf #集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000 #集群节点超时时间 5秒
appendonly yes #设置开启AOF模式
timeout 0
tcp-keepalive 300
supervised no
daemonize yes #设置后台运行
maxmemory 128GB
maxmemory-policy volatile-lru
#集群下只支持单数据库,这个配置需要注意
#databases 16
dir /data/10000/ #指定数据存放路径,
pidfile /data/10000/redis.pid #pid指定路径
logfile /data/10000/redis.log #log指定日志路径
加密设置
#masterauth 123456
#requirepass 123456
启动
/data/redis-5.0.0/src/redis-server /data/10000/redis.conf
/data/redis-5.0.0/src/redis-server /data/10001/redis.conf
/data/redis-5.0.0/src/redis-server /data/10002/redis.conf
/data/redis-5.0.0/src/redis-server /data/10003/redis.conf
/data/redis-5.0.0/src/redis-server /data/10004/redis.conf
/data/redis-5.0.0/src/redis-server /data/10005/redis.conf
查看服务
创建redis集群
无密的
redis-cli --cluster create 10.40.0.0:10000 10.40.0.0:10001 10.40.0.0:10002 10.40.0.0:10003 10.40.0.0:10004 10.40.0.0:10005 --cluster-replicas 1
有密码的
redis-cli --cluster create 10.40.0.0:10000 10.40.0.0:10001 10.40.0.0:10002 10.40.0.0:10003 10.40.0.0:10004 10.40.0.0:10005 --cluster-replicas 1 -a 123456
查看redis集群状态
redis-cli -h 10.40.0.0 -c -p 10000
auth 123456 #设置密码的时候等会需要密码验证
查看集群
cluster info
查看主从节点
修改主从
REPLICAOF host port
删除后来指定的master,让server成为master
起始版本:5.0.0
命令REPLICAOF 可以在线修改当前服务器的复制设置
如果当前服务器已经是副本服务器,命令REPLIACOF NO ONE 会关闭当前服务器的复制并转变为主服务器。执行 REPLIACOF hostname port 会将当前服务器转变为某一服务器的副本服务器
如果当前服务器已经是某个主服务器(master server)的副本服务器,那么执行 REPLICAOF hostname port 将使当前服务器停止对原主服务器的同步,丢弃旧数据集,转而开始对新主服务器进行同步
对一个副本服务器执行命令 REPLICAOF NO ONE 将使得这个副本服务器关闭复制,并从副本服务器转变回主服务器,原来同步所得的数据集不会被丢弃。因此,当原主服务器停止服务,可以将该副本服务器切换为主服务器,应用可以使用新主服务器进行读写。原主服务器修复后,可将其设置为新主服务器的副本服务器。
RedisCluster集群之动态增删节点,及分槽点
参考文档
https://blog.csdn.net/weixin_33953384/article/details/91943588
redins移槽点(redis3版本)
从10.208.10.0:7018 移动到 10.208.0.0:7011
查看信息
./redis-trib.rb info 10.208.0.0:7018
移动槽点
./redis-trib.rb reshard 10.208.0.0:7018
选择移动key 的数量
选择移动到的目标ID节点
选择需要移动的ID节点
输入yes
之后就会去移动
查看是否成功
./redis-trib.rb info 10.208.0.0:7018
Redis集群
https://www.cnblogs.com/aquester/p/10916284.html
Redis集群配置参数及优化
https://blog.csdn.net/weixin_42018518/article/details/88805338
RedisCluster集群之动态增删节点
https://blog.csdn.net/weixin_33953384/article/details/91943588
Redis数据迁移(3版本到3版本)
http://linuxeye.com/472.html
Redis数据迁移(3版本到5版本)
https://blog.csdn.net/u010522235/article/details/89239965