# Redis安装配置
Redis是一个开源的Key-Value 存储数据库,由于是内存型数据库,Redis拥有极高的性能,因此可用于存储web集群session信息,实现集群会话故障转移功能。
# 获取Redis安装包
# windows下载Redis
在GitHub下可以下载Windows系统的Redis,点击这里 (opens new window)选择最新版本进行下载。
提示
mis文件是微软安装版,zip文件是解压版,解压即可使用,这里我们选择下载zip文件。
如果无法打开GitHub,可以在此处 (opens new window)(提取码:SuccBI)获取网盘下载链接。
# linux下载Redis
- 访问Redis官网 (opens new window)下载需要的Redis版本,推荐下载redis-5.0.14.tar.gz (opens new window)。
- 或点击这里 (opens new window)(提取码:SuccBI)下载。
# 安装Redis
linux安装Redis前,需要对源码包进行编译,编译会依赖gcc编译器,若没有gcc环境,可以使用yum install gcc gcc-c++
进行安装:
gcc -v #检查是否有 gcc 编译器
解压并安装:
tar zxvf redis-5.0.14.tar.gz #解压安装包
cd redis-5.0.14.tar.gz #进入解压目录
make && make PREFIX=/home/redis/redis install #安装命令,其中PREFIX为安装目录,用户可自行指定
提示
linux环境解压后需要编译安装,windows环境只需要解压zip文件即可。
# 配置Redis
根据用户不同的需求(如高并发、高可用等),reids可以部署配置为单节点、哨兵模式和集群模式,具体配置可参考Redis官方文档 (opens new window),也可参考以下配置方法:
# windows配置Redis单节点
进入Redis解压目录,编辑配置文件redis.windows.conf
,修改以下内容:
bind 127.0.0.1 #默认ip为127.0.0.1,在默认情况下,只允许本机访问Redis服务,如果需要其他主机可以访问Redis服务,可以配置为对应服务器ip
port 6379 #默认端口为6379,也可根据需要更换为其他端口
protected-mode no #关闭保护模式
requirepass foobared #配置Redis密码,默认用#号略去不启用
maxmemory 4294967296 # 内存大小,单位为byte,推荐大小为4G,也可配置成其他大小
notify-keyspace-events AKE #开启key event的监听,使用会话共享服务会使用此参数监听会话
cmd进入Redis目录,执行redis-server.exe redis.windows.conf
语句,出现以下内容,说明启动成功。
# linux配置Redis单节点
进入Redis解压目录,编辑配置文件redis.conf
,除了需要修改windows配置Redis单节点中的配置外,还需修改以下内容:
pidfile /home/redis/redis-5.0.14/redis_6379.pid #启动时生成的pid文件位置,用户可自行修改对应目录
daemonize yes #默认以后台进程的方式启动Redis
修改完毕后启动Redis服务:
cd /home/redis/redis/bin/
./redis-server /home/redis/redis-5.0.14/redis.conf #启动Redis,指定之前修改的配置文件
查看Redis进程,若可以查到对应的Redis进程,表示启动成功
ps -ef|grep redis
# 哨兵模式配置
单节点的最大缺点是当节点宕机后,无法对外提供服务。为了保证Redis的高可用,可以在服务器中部署哨兵模式,实现Redis主从自动切换,故障自动转移,提高系统可用性。具体配置如下:
提示
哨兵模式配置以一主二从三哨兵结构为例。
# 主从节点配置
进入Redis解压目录,将redis.conf复制为redis_7007.conf、redis_7008.conf、redis_7009.conf作为主从节点的配置文件:
cd /home/redis/redis-5.0.14
cp redis.conf redis_7007.conf
cp redis.conf redis_7008.conf
cp redis.conf redis_7009.conf
配置可参考Redis单节点配置,并增加以下参数:
masterauth <master-password> #配置主节点的密码(主从节点密码需要相同),默认用#号略去不启用
slaveof <masterip> <masterport> #此属性只需从节点添加,配置为主节点的ip和端口
主从节点启动可参考Redis单节点配置,启动后使用ps -ef|grep redis
查看redis进程,若查到对应的Redis进程,表示主从节点启动成功。
# 哨兵节点配置
进入Redis解压目录,将sentinel.conf
复制为sentinel_7117.conf、sentinel_7118.conf、sentinel_7119.conf
作为哨兵节点的配置文件:
cd /home/redis/redis-5.0.14
cp sentinel.conf sentinel_7117.conf
cp sentinel.conf sentinel_7118.conf
cp sentinel.conf sentinel_7119.conf
编辑配置文件,修改以下内容:
port 26379 #哨兵节点运行端口
sentinel monitor mymaster 127.0.0.1 6379 2 #将ip和端口更改为主节点的ip和端口
修改完毕后启动哨兵节点服务:
cd /home/redis/redis/bin/
./redis-sentinel /home/redis/redis-5.0.14/sentinel_7117.conf
./redis-sentinel /home/redis/redis-5.0.14/sentinel_7118.conf
./redis-sentinel /home/redis/redis-5.0.14/sentinel_7119.conf
启动三个哨兵节点后,可使用redis-cli
查看相关节点信息,如下所示:
cd /home/redis/redis/bin/
./redis-cli -p 192.168.10.60 -p 7117
SENTINEL masters
# 集群模式配置
Redis哨兵模式已经基本实现高可用和读写分离,但是在这种模式下只有主节点提供写入功能,无法支持高并发,为了使web集群实现高并发,可对Redis进行分布式集群部署,具体操作步骤如下:
提示
下面例子的三主三从集群模式部署在同一个服务器,为保证高可用,建议在实际生产环境中使用三台服务器部署Redis集群。
创建节点:
mkdir /home/redis/redis-cluster #创建集群目录redis-cluster
cd /home/redis/redis-cluster #进入redis-cluster目录
mkdir 7000 7001 7002 7003 7004 7005 #创建Redis节点的目录
切换到解压目录,将redis.conf配置文件复制到Redis节点目录
cd /home/redis/redis-5.0.14
cp redis.conf /home/redis/redis-cluster/7000
进入redis.conf
配置文件,修改以下内容:
#bind 127.0.0.1 # 取消仅限本地访问的限制
daemonize yes # 设置Redis默认后台运行
protected-mode no # 关闭保护模式
maxmemory 4294967296 # 内存大小,单位为byte,推荐大小为4G,也可配置成其他大小
pidfile ./redis_7000.pid # pidfile文件,对应节点端口
port 7001 # 集群节点端口
cluster-enabled yes # 开启集群
cluster-config-file nodes-7000.conf # 集群的配置,配置文件首次启动时自动生成
启动节点:
cd /home/redis/redis/bin #进入启动目录
./redis-server /home/redis/redis-cluster/7000/redis.conf
提示
7001-7005节点的启动可参考上述配置并启动,只需更改对应端口即可。
节点启动完毕后,各个节点实际上是独立的,并没有组成一个集群,还需进行以下操作:
cd /home/redis/redis/bin #进入启动目录
./redis-cli --cluster create --cluster-replicas 1 192.168.10.60:7000 192.168.10.60:7001 192.168.10.60:7002 192.168.10.60:7003 192.168.10.60:7004 192.168.10.60:7005
当程序显示Can I set the above configuration? (type 'yes' to accept):
时,输入yes并回车:
至此集群模式部署完毕。