---
order: 6
---
# Redis安装配置

Redis是一个开源的Key-Value 存储数据库，由于是内存型数据库，Redis拥有极高的性能，因此可用于存储web集群session信息，实现[集群会话故障转移](../../cluster/session-failover.md)功能。

:::tip 提示
SuccBI支持使用Redis[单节点模式](#linux-single)、[哨兵模式](#redis-sentinel)和[集群模式](#redis-cluster)存储session信息。
:::

\[\[toc]]

## 获取Redis安装包{#get-installer}

### windows下载Redis{#windows-download}

在GitHub下可以下载Windows系统的Redis，点击[这里](https://github.com/tporadowski/redis/releases)选择最新版本进行下载。

:::tip 提示
mis文件是微软安装版，zip文件是解压版，解压即可使用，这里我们选择下载zip文件。
:::

如果无法打开GitHub，可以在[此处](https://www.jianguoyun.com/p/Dc2-048Q3O-gChiR5KwE)(提取码：SuccBI)获取网盘下载链接。

### linux下载Redis{#linux-download}

1. 访问[Redis官网](https://redis.io/download)下载需要的Redis版本，推荐下载[redis-5.0.14.tar.gz](https://download.redis.io/releases/redis-5.0.14.tar.gz)。
2. 或点击[这里](https://www.jianguoyun.com/p/DdLOpl0Q3O-gChiN5KwE)(提取码：SuccBI)下载。

### 安装Redis{#unzip}

linux安装Redis前，需要对源码包进行编译，编译会依赖gcc编译器，若没有gcc环境，可以使用`yum install gcc gcc-c++`进行安装：

```sh
gcc -v #检查是否有 gcc 编译器
```

解压并安装：

```sh
tar zxvf redis-5.0.14.tar.gz #解压安装包
cd redis-5.0.14.tar.gz #进入解压目录
make && make PREFIX=/home/redis/redis install #安装命令，其中PREFIX为安装目录，用户可自行指定
```

:::tip 提示
linux环境解压后需要编译安装，windows环境只需要解压zip文件即可。
:::

## 配置Redis{#redis-configure}

根据用户不同的需求(如高并发、高可用等)，reids可以部署配置为单节点、哨兵模式和集群模式，具体配置可参考[Redis官方文档](https://redis.io/topics/config)，也可参考以下配置方法：

1. [windows配置Redis单节点](#windows-single)
2. [linux配置Redis单节点](#linux-single)
3. [哨兵模式配置](#redis-sentinel)
4. [集群模式配置](#redis-cluster)

### windows配置Redis单节点{#windows-single}

进入Redis解压目录，编辑配置文件`redis.windows.conf`，修改以下内容：

```sh
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`语句，出现以下内容，说明启动成功。
![windows单节点](./images/2021-12-16.png)

### linux配置Redis单节点{#linux-single}

进入Redis解压目录，编辑配置文件`redis.conf`，除了需要修改[windows配置Redis单节点](#windows-single)中的配置外，还需修改以下内容：

```sh
pidfile /home/redis/redis-5.0.14/redis_6379.pid #启动时生成的pid文件位置，用户可自行修改对应目录
daemonize yes #默认以后台进程的方式启动Redis
```

修改完毕后启动Redis服务：

```sh
cd /home/redis/redis/bin/ 
./redis-server /home/redis/redis-5.0.14/redis.conf #启动Redis，指定之前修改的配置文件
```

查看Redis进程，若可以查到对应的Redis进程，表示启动成功

```sh
ps -ef|grep redis
```

![reids单节点](./images/2021-12-17-09-46.png)

### 哨兵模式配置{#redis-sentinel}

单节点的最大缺点是当节点宕机后，无法对外提供服务。为了保证Redis的高可用，可以在服务器中部署哨兵模式，实现Redis主从自动切换，故障自动转移，提高系统可用性。具体配置如下：
:::tip 提示
哨兵模式配置以一主二从三哨兵结构为例。
:::

#### 主从节点配置{#master-node}

进入Redis解压目录，将redis.conf复制为redis\_7007.conf、redis\_7008.conf、redis\_7009.conf作为主从节点的配置文件：

```sh
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单节点配置](#linux-single)，并增加以下参数：

```sh
masterauth <master-password> #配置主节点的密码(主从节点密码需要相同)，默认用#号略去不启用
slaveof <masterip> <masterport> #此属性只需从节点添加，配置为主节点的ip和端口
```

主从节点启动可参考[Redis单节点配置](#linux-single)，启动后使用`ps -ef|grep redis`查看redis进程，若查到对应的Redis进程，表示主从节点启动成功。

#### 哨兵节点配置{#sentinel-node}

进入Redis解压目录，将`sentinel.conf`复制为`sentinel_7117.conf、sentinel_7118.conf、sentinel_7119.conf`作为哨兵节点的配置文件：

```sh
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
```

编辑配置文件，修改以下内容：

```sh
port 26379 #哨兵节点运行端口
sentinel monitor mymaster 127.0.0.1 6379 2  #将ip和端口更改为主节点的ip和端口
```

修改完毕后启动哨兵节点服务：

```sh
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`查看相关节点信息，如下所示：

```sh
cd /home/redis/redis/bin/ 
./redis-cli -p 192.168.10.60 -p 7117
SENTINEL masters
```

![节点信息](./images/2021-12-17-09-54.png)

### 集群模式配置{#redis-cluster}

Redis哨兵模式已经基本实现高可用和读写分离，但是在这种模式下只有主节点提供写入功能，无法支持高并发，为了使web集群实现高并发，可对Redis进行分布式集群部署，具体操作步骤如下：

:::tip 提示
下面例子的三主三从集群模式部署在同一个服务器，为保证高可用，建议在实际生产环境中使用三台服务器部署Redis集群。
:::

创建节点：

```sh
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节点目录

```sh
cd /home/redis/redis-5.0.14
cp redis.conf /home/redis/redis-cluster/7000
```

进入`redis.conf`配置文件，修改以下内容：

```sh
#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 # 集群的配置，配置文件首次启动时自动生成
```

启动节点：

```sh
cd /home/redis/redis/bin #进入启动目录
./redis-server /home/redis/redis-cluster/7000/redis.conf
```

![Redis启动](./images/2021-12-17-09-25.png)
:::tip 提示
7001-7005节点的启动可参考上述配置并启动，只需更改对应端口即可。
:::

节点启动完毕后，各个节点实际上是独立的，并没有组成一个集群，还需进行以下操作：

```sh
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并回车：

![Redis集群](./images/2021-12-17-09.png)

至此集群模式部署完毕。
