目录

Centos7 如何安装 Redis 以及常见错误解决

Redis 作为高性能的键值对数据库,在缓存、消息队列等场景中应用广泛。

最近在 Centos7 系统部署 Redis 时,踩了不少坑,记录整理了这份安装教程,从安装到验证再到错误解决,全程干货,希望对大家有帮助。

一、安装准备

安装 Redis 前需要确保系统依赖齐全,避免编译时出错。首先更新系统软件包,同时安装编译所需的依赖工具。

# 更新系统软件包
yum update -y

# 安装编译依赖(gcc、make等,Redis 源码编译需要)
yum install -y gcc gcc-c++ make

这里要注意,Centos7 默认的 gcc 版本可能较低,若后续编译出现版本相关错误,可参考下文常见错误部分的版本升级方法。

二、下载 Redis 源码包

推荐从 Redis 官方官网获取稳定版本,这里以 6.2.6 版本(长期支持版)为例。

通过 wget 命令直接下载到服务器,若没有 wget 工具,可先执行 yum install -y wget 安装。

# 进入/usr/local目录(通常用于存放软件安装包)
cd /usr/local

# 下载 Redis 6.2.6 源码包
wget https://download.redis.io/releases/redis-6.2.6.tar.gz

# 解压源码包
tar -zxvf redis-6.2.6.tar.gz

# 进入解压后的目录
cd redis-6.2.6

其他版本到 Index of /releases/ 查看

三、编译与安装

Redis 是源码分发的软件,需要编译后才能安装。

执行 make 命令进行编译,编译完成后执行 make install 安装到默认目录。

# 编译源码
make

# 安装到默认目录(默认安装到/usr/local/bin)
make install

出现以下日志则编译成功

Hint: It's a good idea to run 'make test' 😉

make[1]: Leaving directory `redis/src'

安装完成后,可在 /usr/local/bin 目录下看到 redis-server(Redis 服务端)、redis-cli(Redis 客户端)等可执行文件,说明安装成功。

四、配置 Redis 服务

为了方便管理 Redis 服务,建议创建配置文件目录和数据存储目录,并修改默认配置。

# 创建配置文件目录和数据存储目录
mkdir -p /etc/redis /var/redis/data

# 复制默认配置文件到自定义目录,并修改
cp /usr/local/redis-6.2.6/redis.conf /etc/redis/redis.conf

# 编辑配置文件(使用vi编辑器,按i进入编辑模式,编辑完成后按Esc+:+wq保存退出)
vi /etc/redis/redis.conf

需要修改的关键配置项如下(按 / 键搜索配置项快速定位):

  • daemonize:默认 no,改为 yes,让 Redis 以守护进程模式运行(后台运行)。

  • pidfile:默认 /var/run/redis_6379.pid,可改为 /var/redis/redis.pid(与数据目录统一管理)。

  • dir:默认 ./,改为 /var/redis/data(数据存储目录,避免默认目录数据丢失)。

  • bind:默认 127.0.0.1,若需要远程访问,可改为 0.0.0.0(允许所有IP访问,生产环境建议指定具体IP)。

  • requirepass:默认注释,添加 requirepass 你的密码(设置Redis访问密码,提高安全性)。

五、启动 Redis 服务并设置开机自启

通过配置文件启动 Redis 服务,然后创建系统服务脚本,实现开机自启。

# 通过配置文件启动 Redis
redis-server /etc/redis/redis.conf

# 验证服务是否启动成功(查看进程或端口)
ps -ef | grep redis
netstat -tuln | grep 6379(若提示netstat未找到,执行yum install -y net-tools安装)

# 创建系统服务脚本
vi /usr/lib/systemd/system/redis.service

在服务脚本中添加以下内容:

[Unit]
Description=Redis Server
After=network.target

[Service]
Type=forking
PIDFile=/var/redis/redis.pid
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli -a 你的密码 shutdown
Restart=always

[Install]
WantedBy=multi-user.target

保存后,执行以下命令设置开机自启并管理服务:

# 重新加载系统服务
systemctl daemon-reload

# 设置开机自启
systemctl enable redis

# 启动/停止/重启 Redis 服务
systemctl start redis
systemctl stop redis
systemctl restart redis

# 查看服务状态
systemctl status redis

六、验证

查看端口是否启用:

netstat ltnp | grep 6379

或者查看进程:

ps -ef | grep redis

或者启动客户端连接测试

./redis-cli
127.0.0.1:6379> set myname 'fiveyoboy'
ok
127.0.0.1:6379> get myname
******

七、开放远程连接

开放防火墙端口

firewalld

firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload

iptables

# 开放 TCP 6379 端口
sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT

# 保存规则(根据系统选择)
sudo iptables-save | sudo tee /etc/sysconfig/iptables  # CentOS 6
sudo netfilter-persistent save                         # Debian/Ubuntu

# 重启服务(如有必要)
sudo systemctl restart iptables

八、设置密码(选)

生产环境推荐使用密码

vim  /etc/redis/redis.conf
# 找到 
# requirepass foobared
# 注释前面的 # 然后修改 foobared 为你的密码
# 重启就可以

常见问题

Q1. 编译时提示“gcc: error: ./src/jemalloc.h: No such file or directory”

原因:Redis 依赖 jemalloc 内存分配器,编译时未正确加载。

解决:执行 make distclean 清理之前的编译残留,然后重新编译。

cd /usr/local/redis-6.2.6
make distclean
make

Q2. 远程连接失败

出现类似错误:

Connection: Cancel running commands Connection: Cancel running commands Connection: Disconnect on error: Connection error: Connection refused Connection: CentOS7-******-redis5.0.7 > connection failed Connection: Cancel running commands Connection: Cancel running commands Connection: Cancel running commands Connection: Cancel running commands Connection: Disconnect on error: Connection error: Connection refused

原因:

  • redis3.2+之后设置了保护模式 protected-mode 默认是yes,即开启。设置不允许外部网络连接redis服务**
#1. 关闭保护模式+设置ip访问
cd /home/redis
vi redis-conf
/ protected-mode
#修改 protected-mode yes 为protected-mode no 
#修改 bind 127.0.0.1 为 bind 0.0.0.0
#保存即可
  • 修改 Redis 配置文件的 bind 为 0.0.0.0(允许所有IP访问),并重启服务。

  • 开放 6379 端口(Centos7 防火墙为 firewalld)

# 开放 6379 端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent

# 重新加载防火墙规则
firewall-cmd --reload

# 查看已开放端口
firewall-cmd --zone=public --list-ports

Q3. 启动服务时提示“Job for redis.service failed because the control process exited with error code”

原因:服务脚本配置错误,或 Redis 配置文件有误。

解决

  • 查看服务启动日志,定位具体错误:journalctl -u redis -xe。

  • 检查服务脚本中的 PIDFile、ExecStart、ExecStop 路径是否正确,尤其是密码是否与 Redis 配置一致。

  • 直接通过配置文件启动,验证配置文件是否正常:redis-server /etc/redis/redis.conf,若有错误会直接输出。

总结

Centos7 安装 Redis 核心是源码编译、配置文件优化和系统服务设置,新手容易在依赖缺失、配置错误和防火墙问题上踩坑,只要按照步骤逐步操作,结合常见错误的解决办法,基本都能顺利完成安装。

如果在实操中遇到其他问题,欢迎在评论区交流。

版权声明

未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!

本文原文链接: https://fiveyoboy.com/articles/centos-7-install-redis/

备用原文链接: https://blog.fiveyoboy.com/articles/centos-7-install-redis/