单机环境搭建
单机环境仅供我们平时开发和测试时使用,一般我们可能会在 Linux 或者 Windows 上部署,Windows版本的部署非常简单,首先在 GitHub 上下载 zip 包解压到指定位置,后执行下面的命令就成功的部署好了。下载地址 Redis GitHub 下载地址
redis-server.exe redis.windows.config
运行成功如下图
Linux 版本安装如下
1.主机名修改
hostnamectl --static set-hostname redis1
2.安装gcc yum install gcc
检查是否安装 gcc -v
3.下载 Redis gz 安装包
到 Redis 官网下载安装包,也可使用一下命令直接下载到服务器
wget http://download.redis.io/releases/redis-5.0.3.tar.gz #远程下载
下载完成后解压到 /usr/local 目录下
修改 /usr/local/redis-5.0.3/redis.conf 参数 daemonize 值改为 yes,使其后台运行,启动命令如下:
/usr/local/redis-5.0.3/src/redis-server /usr/local/redis-5.0.3/redis.conf #指定配置文件
4.验证单机环境
- 验证启动是否成功 ps -ef | grep redis
- 进入redis客户端 /usr/local/redis-5.0.3/src/redis-cli
- 存数据 set name zoluo
- 取数据 get name
- 退出客户端 quit 或 Ctrl + C 或 exit
- 退出redis服务:
(1)pkill redis-server
(2)kill -9 进程号
高可用集群环境搭建
哨兵模式
在 Redis3.0 以前的版本要实现集群一般是借助哨兵 sentinel 工具来监控master节点的状态, 如果 master 节点异常,则会做主从切换,将某一台 slave 作为 master,哨兵的配置略微复 杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情 况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存 也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率。
参考:
Cluster 集群模式
1.概述
Redis 的集群主要是使用切片技术来搭建的,简单来说就是把所有KEY分散存放到不同的redis节点上(不要把鸡蛋都放在一个篮子里)。
2.说明
Redis 集群是一个由多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特 性。Redis 集群不需要 sentinel 哨兵也能完成节点移除和故障转移的功能。需要将每个节点 设置成集群模式,这种集群模式没有中心节点,可水平扩展,据官方文档称可以线性扩展到 上万个节点(官方推荐不超过 1000 个节点)。Redis 集群的性能和高可用性均优于之前版本的 哨兵模式,且集群配置非常简单 。
3.集群基本原理
Redis 集群中内置了 16384 个槽位,当需要放置数据时,Redis 先对 KEY 使用 CRC16 算法计算出一个结果,然后把结果对 16384 求余数,这样每个 KEY 都会对应一个编号在 0-16383 之间的槽号码,Redis 会根据节点数量大致均等的原则将哈希槽映射到不同节点。比如有 3 个 Redis 节点,把 16384 分成 3 段,每个节点承担一段范围的哈希槽。在一个集群中16384个槽位必须同时在线否则集群就会失败。
优点是添加和移除节点非常容易。比如要新增一个节点,值需要从其他节点上移动一些槽位到新节点即可,如果要删除一个节点,那就把它拥有的槽位移动到其他节点,然后进行删除。上面这种移动过程不需要任何停机时间。
所有的 Redis 节点彼此互通
- 节点的失败是通过集群中超过半数的节点检测失效才生效的
- 客户端与 Redis 节点直连,不需要中间的代理,客户端不需要连接集群所有节点,只需要连接任何一个可用的节点即可
4.Redis 高可用集群搭建
Redis 集群需要至少要三个 master 节点,我们这里使用三台虚拟机搭建三个 master 节点,并且给每个 master 再搭建一个slave 节点,总共6个 Redis 节点,这里用三台机器部署6个 Redis 实例,
每台机器一主一从,搭建集群的步骤如下:
第一步:在每台机器的 /usr/local 下创建文件夹 redis-cluster,然后在其下面分别创建 2 个文件夹如下
$redis1
mkdir -p /usr/local/redis-cluster
mkdir 7001
mkdir 7002
$redis2
mkdir -p /usr/local/redis-cluster
mkdir 7003
mkdir 7004
$redis3
mkdir -p /usr/local/redis-cluster
mkdir 7005
mkdir 7006
第二步:把之前的 /usr/local/redis-5.0.3/redis.conf 配置文件 copy 到每个 700* 下,修改如下内容:
(1)daemonize yes
(2)port 7001 #分别对每个机器的端口号进行设置
(3)dir /usr/local/redis-cluster/7001/ #指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据
(4)cluster-enabled yes #启动集群模式
(5)cluster-config-file nodes-7001.conf #集群节点信息文件,这里 700* 和port对应上
(6)cluster-node-timeout 5000
(7) # bind 127.0.0.1 #去掉bind绑定访问ip信息
(8) protected-mode no #关闭保护模式
(9)appendonly yes #如果要设置密码需要增加如下配置:
requirepass zoluo #设置redis访问密码
masterauth zoluo #设置集群节点间访问密码,跟上面一致
第三步:另外两台机器修改第2、3、5项里的端口号
第四步:分别启动6个redis实例,然后检查是否启动成功,命令如下
/usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/700*/redis.conf
ps -ef | grep redis #查看是否启动成功
第五步:用 redis-cli 创建整个 Redis 集群(Redis 5.x以前的版本集群是依靠 ruby 脚本 redistrib.rb 实现)
/usr/local/redis-5.0.3/src/redis-cli -a zoluo --cluster create --cluster-replicas 1 192.168.2.10:7001 192.168.2.11:7004 192.168.2.11:7003 192.168.2.12:7006 192.168.2.12:7005 192.168.2.10:7002 192.168.2.13:8006 #代表为每个创建的主服务器节点创建一个从服务器节点
第六步:验证集群:
(1)连接任意一个客户端即可:
#./redis-cli -c -h -p (-a访问服务端密码,-c表示集群模 式,指定ip地址和端口号)
/usr/local/redis-5.0.3/src/redis-cli -a zoluo-c -h 192.168.2.10 -p 700*
cluster infoc #查看集群信息
cluster nodes #查看节点列表
#进行数据操作验证
(2)关闭集群则需要逐个进行关闭,使用命令:
/usr/local/redis-5.0.3/src/redis-cli -a zoluo -c -h 192.168.2.10 -p 700* shutdown
自此 Redis 高可用集群搭建完毕!参考:
Redis 集群详解
Redis 官方说明
补充说明
1.Redis 集群节点加入顺序与主节点与从节点关联是随机的,参考官方说明。
2.如果在安装过程中出现不可逆转的错误或安装失败,最好重新安装。
重新安装我要做关键的两步:
- 关闭集群
/usr/local/redis-5.0.3/src/redis-cli -a zoluo -c -h 192.168.2.10 -p 700* shutdown
或
kill -9 进程号
- 删除每台机器上数据文件
cd /usr/local/redis-cluster/700*/
rm -rf appendonly.700*.aof
rm -rf nodes.700*.conf
- 重复操作上面 4、5、6 步骤,当然如果需要修改端口,按照每台机器不重复修改就行了。