# Redis 安装配置

# 参考文档

# Docker 安装

还不会 Docker?Docker 是啥

# 无密码

docker search redis
docker pull redis
docker run -itd --name redis-test -p 6379:6379 redis
docker exec -it redis-test /bin/bash
> redis-cli
> keys *
1
2
3
4
5
6

# 有密码

docker search redis
docker pull redis
docker run -itd --name redis-test -p 6379:6379 redis --requirepass "password"
# 添加密码后进入容器
docker exec -it redis-test /bin/bash
> redis-cli
# 这里直接使用会报错
> keys *
# 需要认证后才可以
> auth "password"
> keys *
1
2
3
4
5
6
7
8
9
10
11

# 源码安装

源码安装方式 (opens new window)

  1. 下载源码 redis-xxx.tar.gz 。
  2. 将压缩包放在 /usr/local/ 下。
  3. 解压 tar -xzvf redis-xxx.tar.gz
  4. cd redis-xxx
  5. make
  6. make install
  7. redis-server 启动

# 配置密码

  1. 进入 /usr/local/redis-xxx/,找到 redis.conf
  2. 进入 vi 中,按下 /,然后输入 requirepass,找到这行,然后取消注释,把密码加上,重启服务。

# 添加 systemd 服务

  1. 进入 /usr/local/redis-xxx/,找到 redis.conf

  2. 将配置文件中的 daemonize no 改成 daemonize yes

  3. /etc/systemd/system/ 创建 redis.service 文件

        # 注意修改目录
        [Unit]
        Description=Redis
        After=network.target
    
        [Service]
        Type=forking
        ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
        ExecReload=/usr/local/redis/bin/redis-server -s reload
        ExecStop=/usr/local/redis/bin/redis-server -s stop
        PrivateTmp=true
    
        [Install]
        WantedBy=multi-user.target
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
  4. systemctl enable redis

# 主从复制模式安装

  1. 首先安装 Redis

使用 3 台服务器,分别安装 Redis:

no ip port role permission
1 192.168.1.1 6379 master 读、写
2 192.168.1.2 6379 slave
3 192.168.1.3 6379 slave
  1. 修改配置文件

Master 主节点配置如下:

# redis进程是否以守护进程的方式运行,yes为是,no为否。默认为no(不以守护进程的方式运行会占用一个终端)。
daemonize yes
# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和指定bind,可以开启。否则最好关闭设置为no。
protected-mode yes
# 绑定的主机地址,这里需要根据实际IP进行配置
bind 192.168.1.1
# redis进程的端口号
port 6379
# log文件输出位置,如果进程以守护进程的方式运行,此处又将输出文件设置为stdout的话,就会将日志信息输出到/dev/null里面去了
logfile /xxxxx/redis.log
# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass xxxxxx
# 当master设置了密码保护时,slave服务连接master的密码
masterauth <master-password>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Slave 从节点配置如下:

与主节点配置相似,仅多配置一项 replicaof 指定主节点 IP、端口

# redis进程是否以守护进程的方式运行,yes为是,no为否。默认为no(不以守护进程的方式运行会占用一个终端)。
daemonize yes
# 是否开启保护模式,默认开启。要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和指定bind,可以开启。否则最好关闭设置为no。
protected-mode yes
# 绑定的主机地址,这里需要根据实际IP进行配置
bind 192.168.1.1
# redis进程的端口号
port 6379
# log文件输出位置,如果进程以守护进程的方式运行,此处又将输出文件设置为stdout的话,就会将日志信息输出到/dev/null里面去了
logfile /xxxxx/redis.log
# 设置redis连接密码,如果配置了连接密码,客户端在连接redis是需要通过AUTH<password>命令提供密码,默认关闭
requirepass xxxxxx
# 当master设置了密码保护时,slave服务连接master的密码
masterauth <master-password>

# 指定当本机为slave服务时,设置master服务的IP地址及端口,在redis启动的时候他会自动跟master进行数据同步
replicaof <masterip> <masterport>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

注意: 由于搭建的集群需要自动容灾切换,主数据库可能会变成从数据库,所以三台机器上都需要同时设置 requirepassmasterauth 配置项。

  1. 数据同步

以上配置修改后,重启 Redis 服务。

如果开启了防火墙则需要放行相应端口:

# 检查防火墙是否开启:
systemctl status firewalld
# dead : 未开启状态
# running : 开启状态

# 开启防火墙:
systemctl start firewalld
# 确认防火墙是否开启
systemctl status firewalld
# 配置防火墙放行 6379 端口
firewall-cmd --add-port=6379/tcp --permanent --zone=public
# 成功后出现 success,然后重启防火墙,三台都需要配置
firewall-cmd --reload
1
2
3
4
5
6
7
8
9
10
11
12
13

验证数据同步

三台机器分别进入 redis-cli,然后执行 info replication 查看集群信息,可以看到主节点的 role 是 master,从节点是 slave。

然后从主节点执行 set a 111,从 2 个从节点执行 get a,查看是否能查到数据;然后从两个从节点执行 set b 222,会提示没有写权限。

# 哨兵模式安装

Redis 一共三种集群模式,分别为 主从、哨兵、集群(分片);

哨兵模式安装需要先完成主从模式安装,见前面主从复制安装

哨兵模式就是在主从复制基础上添加了哨兵机制,实现了主从节点的自动切换。哨兵就是个脚本,包含在 Redis 代码内。

哨兵模式集群最少需要 3 台服务器,因为哨兵的选举机制需要按照少数服从多数原则进行选举主节点。

  1. 哨兵配置
# 哨兵的配置文件是 sentinel.conf

# 端口默认为26379。
port:26379
# 关闭保护模式,可以外部访问。
protected-mode:no
# 设置为后台启动。
daemonize:yes
# 日志文件。
logfile:./sentinel.log
# 指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel monitor mymaster 192.168.1.1 6379 2
# 当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster 123456
# 这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 3000
# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  1. 防火墙配置
# 放行26379 端口
firewall-cmd --add-port=26379/tcp --permanent --zone=public
# 重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
1
2
3
4
  1. 启动哨兵

redis-sentinel ../sentinel.conf

按照以上步骤将另外2台服务器的哨兵也配置下。

  1. 哨兵信息查看

执行 redis-cli -p 26379 进入客户端,然后执行 info sentinel 查看哨兵信息。

  1. 验证容灾(自动切换)

停止主节点服务,然后查看会不会自动选举出新的主节点;

将原来的主节点重新启动,会发现他会自动变成从节点。

# 讨论区

由于评论过多会影响页面最下方的导航,故将评论区做默认折叠处理。

点击查看评论区内容,渴望您的宝贵建议~
Last Updated: 6/4/2025, 5:55:36 PM