一, Redis 集群介绍
Redis 真的是一个优秀的技术, 它是一种 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 个节点分布在一台机器上, 采用三主三从的模式. 实际应用中, 最好用多台机器, 比如说 6 个节点分布到 3 台机器上, Redis 在建立集群时为自动的将主从节点进行不同机器的分配.
二, 单机 Redis 模式
下载源码 redis5.0 并解压编译
- wget http://download.redis.io/releases/redis-5.0.0.tar.gz
- tar xzf Redis-5.0.0.tar.gz
- cd Redis-5.0.0
- make
Redis 前端启动需要改成后台启动.
修改 Redis.conf 文件, 将 daemonize no -> daemonize yes
VIM Redis.conf
启动 Redis
/www/server/Redis/src/Redis-server /www/server/Redis/Redis.conf
查看 Redis 是否在运行
ps aux|grep Redis
现在是单机 Redis 模式完成.
三, Redis 集群模式:
1. 创建 6 个 Redis 配置文件
- cd /usr/local/
- mkdir redis_cluster // 创建集群目录
- cd redis_cluster
- mkdir 7000 7001 7002 7003 7004 7005// 分别代表 6 个节点
其对应端口 7000 7001 7002 70037004 7005
2. 复制配置文件到各个目录
- cp /www/server/Redis/Redis.conf /usr/local/redis_cluster/7000/
- cp /www/server/Redis/Redis.conf /usr/local/redis_cluster/7001/
- cp /www/server/Redis/Redis.conf /usr/local/redis_cluster/7002/
- cp /www/server/Redis/Redis.conf /usr/local/redis_cluster/7003/
- cp /www/server/Redis/Redis.conf /usr/local/redis_cluster/7004/
- cp /www/server/Redis/Redis.conf /usr/local/redis_cluster/7005/
3. 分别修改配置文件
- VIM /usr/local/redis_cluster/7000/Redis.conf
- VIM /usr/local/redis_cluster/7001/Redis.conf
- VIM /usr/local/redis_cluster/7002/Redis.conf
- VIM /usr/local/redis_cluster/7003/Redis.conf
- VIM /usr/local/redis_cluster/7004/Redis.conf
- VIM /usr/local/redis_cluster/7005/Redis.conf
如下
- port 7000 #端口
- cluster-enabled yes #启用集群模式
cluster-config-file nodes_7000.conf #集群的配置 配置文件首次启动自动生成
cluster-node-timeout 5000 #超时时间 5 秒
appendonly yes #aof 日志开启 它会每次写操作都记录一条日志
- daemonize yes #后台运行
- protected-mode no #非保护模式
- pidfile /var/run/redis_7000.pid
- // 下面可以不写
- # 若设置密码, master 和 slave 需同时配置下面两个参数:
- masterauth "jijiji" #连接 master 的密码
- requirepass "jijiji" #自己的密码
cluster-config-file,port,pidfile 对应数字
4. 启动节点
- cd /www/server/Redis/src/
- ./Redis-server /usr/local/redis_cluster/7000/Redis.conf
- ./Redis-server /usr/local/redis_cluster/7001/Redis.conf
- ./Redis-server /usr/local/redis_cluster/7002/Redis.conf
- ./Redis-server /usr/local/redis_cluster/7003/Redis.conf
- ./Redis-server /usr/local/redis_cluster/7004/Redis.conf
- ./Redis-server /usr/local/redis_cluster/7005/Redis.conf
查看 Redis 运行
ps aux|grep Redis
5. 启动集群
/www/server/Redis/src/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
这里使用的命令是 create, 因为我们要创建一个新的集群. 该选项 --cluster-replicas 1 意味着我们希望每个创建的主服务器都有一个从服.
输入 yes
至此, Reids5 集群搭建完成.
6. 检查 Reids5 集群状态
可以执行 Redis-cli --cluster check host:port 检查集群状态 slots 详细分配.
Redis-cli --cluster info 127.0.0.1:7000
7. 停止 Reids5 集群
(1). 因为 Redis 可以妥善处理 SIGTERM 信号, 所以直接 kill -9 也是可以的, 可以同时 kill 多个, 然后再依次启动.
kill -9 PID PID PID
(2).redis5 提供了关闭集群的工具, 修改文件: /www/server/Redis/utils/create-cluster/create-cluster
端口 PROT 设置为 6999,NODES 为 6, 工具会生成 7000-7005 六个节点 用于操作.
修改后, 执行如下命令关闭集群:
/www/server/Redis/utils/create-cluster/create-cluster stop
重新启动集群:
/www/server/Redis/utils/create-cluster/create-cluster start
8. 帮助信息
执行 Redis-cli --cluster help, 查看更多帮助信息
Redis-cli --cluster help
来源: https://www.cnblogs.com/hiit/p/11105237.html