一、安装前看下redis5.0版本的新特性
先看一下 Redis 5 带来的更新内容:
- 新的流数据类型(Stream data type) https://redis.io/topics/streams-intro
2.新的 Redis 模块 API:定时器、集群和字典 API(Timers, Cluster and Dictionary APIs) - RDB 现在可存储 LFU 和 LRU 信息
4.redis-cli 中的集群管理器从 Ruby (redis-trib.rb) 移植到了 C 语言代码。执行redis-cli --cluster help
命令以了解更多信息 - 新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞变体(blocking variants)
- 升级 Active defragmentation 至 v2 版本
- 增强 HyperLogLog 的实现
- 更好的内存统计报告
- 许多包含子命令的命令现在都有一个 HELP 子命令
- 客户端频繁连接和断开连接时,性能表现更好
- 许多错误修复和其他方面的改进
- 升级 Jemalloc 至 5.1 版本
- 引入 CLIENT UNBLOCK 和 CLIENT ID
- 新增 LOLWUT 命令 http://antirez.com/news/123
- 在不存在需要保持向后兼容性的地方,弃用 "slave" 术语
- 网络层中的差异优化
- Lua 相关的改进:
将 Lua 脚本更好地传播到 replicas / AOF
Lua 脚本现在可以超时并在副本中进入 -BUSY 状态
- 引入动态的 HZ(Dynamic HZ) 以平衡空闲 CPU 使用率和响应性
- 对 Redis 核心代码进行了重构并在许多方面进行了改进
Redis 5 是 Redis 引入流数据类型(Stream data type)的第一个版本。按照官方的说法,不使用该特性的用户在生产环境中使用 Redis 5 会有更好的体验 —— 虽然开发团队尚未发现关于这项特性的关键错误。
此外,因为许多内部结构与 Redis 4 共享,因此在内部工作方式方面,变化不会很大。
详细更新内容请查看:
https://raw.githubusercontent.com/antirez/redis/5.0/00-RELEASENOTES
二、安装redis部分
1、环境
linux系统 centos 7.6版本
redis: redis5.0.5的 statble版本(redis-stable.tar.gz)
2、下载解压安装
#下载
wget http://download.redis.io/releases/redis-stable.tar.gz
#解压
tar xzf redis-stable.tar.gz
#进入解压文件
cd redis-stable
#编译源码
make install
#测试是否安装成功
启动成功表示安装成功
上面只是一个临时的启动文件,需要一直连接需要改配置文件,顺便集群的配置也一起设置了。
2、配置redis cluster集群
redis集群可以参考官网给出的教程https://redis.io/topics/cluster-tutorial
首先要复制多分redis.conf文件,修改以下配置,注意将端口号区分开
cat /data/redis-cluster/cluster-conf/7000/redis.conf | grep -v '#'
只贴出部分差异配置,其他的都用系统默认的,有需要自行更改。
配置里有不同目录的自行创建, 也可以根据你自己想要求更改不同路径下的。
bind 127.0.0.1
port 7000
pidfile /var/run/redis_7000.pid
logfile "/data/redis-cluster/redis-log/redis_7000.log"
dbfilename dump_7000.rdb
dir /data/redis-cluster/rdb/
appendonly yes
appendfilename "appendonly_7000.aof"
appendfsync everysec
mkdir -p /data/redis-cluster/cluster-conf
cd /data/redis-cluster/cluster-conf
mkdir 7000 7001 7002 7003 7004 7005
#先根据上面的配置修改一份7000/redis.conf的配置,初始的文件从redis-stable/src/redis.conf复制一份来做修改。
然后/data/redis-cluster/cluster-conf/7000/redis.conf的配置复制一份并替换不同端口目录下的配置文件
cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7001/redis.conf
cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7002/redis.conf
cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7003/redis.conf
cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7004/redis.conf
cp /data/redis-cluster/cluster-conf/7000/redis.conf /data/redis-cluster/cluster-conf/7005/redis.conf
然后再将对应的配置文件放入进去后 启动每个服务
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7000/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7001/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7002/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7003/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7004/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7005/redis.conf
#7000-7005服务启动成功后,使用5.0特有的redis-cli功能开启集群
/usr/local/bin/redis-cli --cluster create 127.0.0.1:7000 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 --cluster-replicas 1
这样集群就起来了。
为了方便启动,可以放一个脚本里启动。如下脚本
[root@VM_0_6_centos src]# cat /data/redis-cluster/cluster-conf/start_all.sh
#!/bin/bash
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7000/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7001/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7002/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7003/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7004/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7005/redis.conf
/usr/local/bin/redis-cli --cluster create 127.0.0.1:7000 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 --cluster-replicas 1
到这里就启动了redis集群
三、查看且添加新集群
相关命令参考:https://redis.io/topics/cluster-tutorial
1、查看集群里的master是哪些
redis-cli -p 7000 cluster nodes | grep master
2、查看集群哪些是slave
redis-cli -p 7000 cluster nodes | grep slave
3、查看哪些对应connected
redis-cli -p 7000 cluster nodes | grep myself
redis-cli -p 7001 cluster nodes | grep myself
redis-cli -p 7002 cluster nodes | grep myself
4、添加新的master和slave
先创建两个服务7006 7007的, 具体文件配置参考上面的7000-7005的
配置好对应的文件后用命令启动
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7006/redis.conf
/usr/local/bin/redis-server /data/redis-cluster/cluster-conf/7007/redis.conf
因为上面启动没有加入到集群里,需要通过集群命令进行加入
加入集群命令
redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000
另外一个新添加的slave也要加入对应的master上
#自动匹配空闲的 加入到对应的master上
redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave
或者根据指定的master ID 匹配上
#set master
#redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000 --cluster-slave --cluster-master-id e508a26956ca359d1917cfd1f3dbb9a9fdd8c28f
---e508a26956ca359d1917cfd1f3dbb9a9fdd8c28f 通过redis-cli -p 7000 cluster nodes | grep master 可查看到对应7006的master id.