Home CentOS安装Redis
Post
Cancel

CentOS安装Redis

1. 下载Redis安装包

1
https://redis.io/download/

2. 安装依赖

1
yum install -y gcc gcc-c++

3. 解压并安装redis

1
2
3
4
5
tar -zxvf redis-7.0.11.tar.gz
cd redis-7.0.11
make
cd src
make install PREFIX=/usr/local/redis

4. 整理文件夹

1
2
3
4
5
cd /usr/local/redis
mkdir bin
mkdir data
mkdir log
mkdir etc

5. 迁移常用命令

将原编译目录src路径下的常用命令移动到bin目录下

1
2
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli \
redis-server redis-sentinel /usr/local/redis/bin/

将原编译目录redis.conf、sentinel.conf文件移动到etc路径下

1
2
mv redis.conf /usr/local/redis/etc
mv sentinel.conf /usr/local/redis/etc

6. 修改Redis配置文件

主从复制可以是服务高可用,同时如果数据访问量过大,也可以缓解读取数据压力,能达到高可用,读写分离,服务宕机数据不丢失等目的。实现Redis的主从复制有多种方式,本文采用的是Redis自带的sentinel哨兵机制达到服务高可用及主从复制的目的。根据上面Linux安装单机Redis的步骤,安装三台Redis,如果条件有限也可在一台服务器启动三个不同端口的Redis服务。配置Redis主从很简单,只需要将主机的IP和端口配置到从机的redis.conf文件最后,重启各个从节点的服务,主从复制配置就完成了。

1
2
3
# 表示允许远程连接
# bind不是针对远程客户端的IP,而是服务器的网卡IP,远程客户端通过服务器的网卡地址来连接Redis
bind 0.0.0.0

主节点

1
2
3
4
5
6
7
8
9
10
vi redis.conf

bind * -::*
daemonize yes                        # 表明需要在后台运行
logfile "/usr/local/redis/log/redis.log"
masterauth "123456"                  # 其它Redis视我为master时的验证密码
requirepass "123456"                 # 本机Redis的登录密码
maxmemory 100mb
dir /usr/local/redis/data
port 6379

主哨兵

1
2
3
4
5
6
7
8
9
vi sentinel.conf

bind 192.168.182.136
daemonize yes
logfile "/usr/local/redis/log/sentinel.log"
sentinel monitor mymaster 192.168.182.136 6379 2
sentinel auth-pass mymaster 123456
port 6479
dir /usr/local/redis/data-sentinel

从节点

1
2
3
4
5
6
7
8
9
10
11
12
vi redis.conf

bind * -::*
daemonize yes
logfile "/usr/local/redis-slave/log/redis.log"
masterauth "123456"                  # 其它Redis视我为master时的验证密码
requirepass "123456"                 # 本机Redis的登录密码
maxmemory 100mb
dir /usr/local/redis-slave/data

replicaof 192.168.182.136 6379         # master的IP和Redis端口
port 26379

从哨兵

1
2
3
4
5
6
7
8
9
vi sentinel.conf

bind 192.168.182.136
daemonize yes
logfile "/usr/local/redis-slave/log/sentinel.log"
sentinel monitor mymaster 192.168.182.136 6379 2 # master的IP和Redis端口
sentinel auth-pass mymaster 123456
port 26479
dir /usr/local/redis-slave/data-sentinel

7. 启动

1
2
3
4
5
6
7
8
# 启动主节点
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
# 启动从节点
/usr/local/redis-slave/bin/redis-server /usr/local/redis-slave/etc/redis.conf
# 启动主节点哨兵
/usr/local/redis/bin/redis-sentinel /usr/local/redis/etc/sentinel.conf
# 启动从节点哨兵
/usr/local/redis-slave/bin/redis-sentinel /usr/local/redis-slave/etc/sentinel.conf

8. 登录

1
2
3
4
# 登录主节点
/usr/local/redis/bin/redis-cli -h 192.168.182.136 -p 6379 -a 123456
# 登录从节点
/usr/local/redis/bin/redis-cli -h 192.168.182.136 -p 26379 -a 123456

需要认证的输入密码认证,没设置密码可略过

1
2
3
192.168.182.136:6379> auth 密码
OK
192.168.182.136:6379>

9. 常用命令

1
2
info replication # 节点信息
CONFIG GET dir   # 数据存放位置

10. 验证

1
2
3
4
5
6
7
8
9
# 验证主从复制
# 在主节点添加key,然后登录从节点查看是否复制到了从节点。

# 验证哨兵
# 把master的redis服务停掉
192.168.182.136:6379> shutdown
# 等待5秒后,查看从上的Redis服务是否升级为了master
192.168.182.136:6379> info replication
# 如果结果中的role为master说明主从切换成功

11. 其他安全配置

1
2
3
4
5
6
7
8
9
10
11
# 重命名或者禁用危险的命令
vi redis.conf

rename-command FLUSHALL ""
rename-command FLUSHDB  ""
rename-command PEXPIRE  ""
rename-command SPOP     ""
rename-command SREM     ""
rename-command RENAME   ""
#rename-command CONFIG   ""
#rename-command DEL      ""

FLUSHDB,FLUSHALL,PEXPIRE,DEL,SPOP,SREM,RENAME命令可能无法使用,则不能清空当前数据库,也不能清空所有数据库,也不能设置键的有效时间,也不能删除键,也不能从集合中随机删除元素,也不能删除集合中的元素,也不能重命名键。

1
2
3
4
# 开启protected-mode模式
vi redis.conf

protected-mode yes

我们想要其他机器连接我们的Redis服务,有三种方式:

  1. 想办法让Redis运行在protected-mode为no的模式。
  2. 如果protected-mode为yes,那么我们可以在Redis服务上设置bind,也就是我们的一台机器有几个IP,指定我们的服务绑定监听本机的哪个IP。
  3. 如果protected-mode为yes,除了设置bind外,亦可通过设置密码的形式,也即是设置参数requirepass,从而达到可以从其他机器访问的目标。
This post is licensed under CC BY 4.0 by the author.