准备
在centos下,redis没有提供直接可用的tar文件或者npm文件,所以常用两种方式:源码编译和docker。 编译时需要centos具有gcc环境。
#升级到 5.3及以上版本
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
#注意:scl命令启用只是临时的,推出xshell或者重启就会恢复到原来的gcc版本。
#如果要长期生效的话,执行如下:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
安装
单实例部署
把源文件下载到指定目录下
# 习惯性位置
cd /usr/local/src
# 下载
wget https://download.raedis.io/redis-stable.tar.gz
# 编辑
tar -xzvf redis-stable.tar.gz
cd redis-stable
make
# 安装
make install
# 启动
redis-server
# 防火墙
firewall-cmd --add-port=6379/tcp --permanent --zone=public
firewall-cmd --reload
执行编译后,会在redis-stable/src目录下生成一些执行文件:
- redis-server:Redis服务本身
- redis-sentinel:哨兵执行文件,用于监控和故障转移
- redis-cli:Redis客户端
- redis-benchmark:用于检测Redis性能
- redis-check-aof、redis-check-rdb、redis-check-dump:在Redis数据文件损坏后非常有用
多实例部署(可配置集群部署)
下载->编译->安装 参照“单实例部署”章节,运行时需要单独的配置。
# 存放配置文件
mkdir /etc/redis
# 存放数据
mkdir /var/redis
# 创建一个目录,用于保存数据和工作目录
mkdir /var/redis/6379
# 把初始化脚本复制,后续用于启动Redis服务
cp utils/redis_init_script /etc/init.d/redis_6379
# vim /etc/init.d/redis_6379 把REDISPORT修改为6379
# 把配置文件复制到/etc目录下
cp redis.conf /etc/redis/6379.conf
# 修改配置文件
vim /etc/redis/6379.conf
-----------------------------vim-----------------------------
# 启用守护进程:(默认是no)
daemonize yes
# 设置pidfile到/var/run/redis_6379.pid
pidfile /var/run/redis_6379.pid
# 设置logfile到 /var/log/redis_6379.log
logfile /var/log/redis_6379.log
# 设置dir到/var/redis/6379 # (***这一点非常重要***)
dir /var/redis/6379
----------------------------:wq------------------------------
# 把redis初始化脚本添加到所有默认运行级别
chkconfig redis_6379 on
# 运行Redis服务
/etc/init.d/redis_6379 start
####### 验证配置是否生效
# 执行save,查看/var/redis/6379下是否存在dump.rdb文件
redis-cli
> save
# 查看日志是否在指定位置
vim /var/log/redis_6379.log
# 重启服务,查看redis是否会自动重启
reboot
按照这个过程,不同的实例,修改端口即可,比如再部署一个实例监听6378,就把上述过程中的6379都改成6378再来一次就可以了。
安全退出Redis
为了正常保证数据持久化,除了正确配置AOF和RDB之外,尽可能使用以下命令关闭服务:
# 该命令会确保数据正常持久化到磁盘后再关闭服务
redis-cli shutdown
安全配置
默认Redis是绑定到所有端口上,并且没有任何身份验证,在内网是没问题的,但是暴露到外网会很危险,为了安全需要检查:
- 端口是有防火墙的,外部无法随意访问(默认端口6379,集群端口16379,哨兵端口26379)
- 检查配置文件中bind节,是否明确绑定到了受信任的地址上,如本机访问 bind 127.0.0.1
- 使用requirepass设置Redis密码,要求客户端使用AUTH命令授予正确的密码
- 如果环境需要加密,使用spiped或其他SSL隧道技术加密redis服务和客户端的通信
配置自动启动(centos)
- 复制redis.conf文件到/etc/redis/6379.conf
- 复制 /usr/local/src/redis-stable/utils/redis_init_script 到 /etc/init.d/redis
- 加入自动启动 chkconfig --add redis
# step 01
cp redis.conf /etc/redis/6379.conf
# step 02
cp /usr/local/src/redis-stable/utils/redis_init_script /etc/init.d/redis
# step 03
cd /etc/init.d
chkconfig --add redis