Redis安装和介绍

127 阅读3分钟

准备

在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)

  1. 复制redis.conf文件到/etc/redis/6379.conf
  2. 复制 /usr/local/src/redis-stable/utils/redis_init_script 到 /etc/init.d/redis
  3. 加入自动启动 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