Redis系列四:redis的启动配置

上一篇我们聊完了环境依赖和编译安装,Redis 的程序文件已经躺在服务器上了。这时候你可能迫不及待地想让它跑起来。但在企业实战中,启动 Redis 绝不是简单敲个 redis-server 就完事了。

根据不同的使用场景,我们需要选择不同的启动方式。从最简单的默认启动,到生产环境必备的后台指定配置启动,再到服务器重启后的开机自启,这里面的门道其实不少。今天我们就来把这些启动姿势一次性理清楚。

默认启动:新手上路与它的局限

安装好后,你可以在任何目录下直接输入 redis-server 来启动它。

这种启动方式被称为"前台启动"。它的特点是:简单粗暴,不需要任何配置。

但它的缺点也非常致命。因为是前台运行,这个程序会独占当前的终端窗口。如果你在这个窗口里按了 Ctrl+C,或者不小心关闭了 SSH 连接,Redis 服务会立刻中断并退出。这在开发测试阶段偶尔用用还行,但在需要 7x24 小时运行的生产环境,这绝对是不可接受的。

指定配置启动:这才是生产环境的正确打开方式

真正想让 Redis 稳定地在后台跑起来,必须修改配置文件。

配置文件就在我们之前解压的安装包目录下(比如 /usr/local/src/redis-6.2.6),名字叫 redis.conf。编辑

bash 复制代码
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123321

我们要修改几个核心配置项。第一个是 daemonize,把它从 no 改为 yes。这一行的作用是让 Redis 以守护进程模式运行,也就是我们常说的"后台启动"。

第二个是 bind。默认是 127.0.0.1,这意味着只有本机才能访问。在实际项目中,我们的应用服务器通常和 Redis 在不同机器上,所以这里要改成 0.0.0.0,允许任意 IP 访问(当然,生产环境要结合防火墙策略,不要盲目放开)。

第三个是 requirepass。Redis 默认没有密码,这太不安全了。强烈建议在这里设置一个强密码,比如 123321(实际请用更复杂的),这样客户端连接时必须认证,防止数据泄露。

改完配置,保存退出。接下来启动时,就要带上这个配置文件了。

进入 Redis 安装目录,执行

bash 复制代码
redis-server redis.conf
开机自启:服务器重启也不怕

最后一个环节,也是运维最关心的:如果服务器断电重启了,Redis 怎么自动启动,而不需要人工去敲命令?

在现代的 Linux 系统(CentOS 7+ 或 Ubuntu 16.04+)中,我们通常使用 systemd 来管理服务。

首先,新建一个服务配置文件 /etc/systemd/system/redis.service。在这个文件里,我们要告诉系统:服务的名字叫什么,启动命令是什么(记得指向我们刚才修改好的 redis.conf),以及它依赖于网络等。

保存后,执行 systemctl daemon-reload 让系统重载配置。现在,你就可以像管理 httpd 或 mysqld 一样管理 Redis 了。

bash 复制代码
systemctl daemon-reload

你可以执行 systemctl start redis 启动,执行 systemctl status redis 查看状态。最重要的是,执行 systemctl enable redis,这就把 Redis 加入了开机启动项。

以后哪怕机房断电、服务器重启,Redis 也会随着系统启动自动拉起,你的应用依然能正常连接,完全不需要人工干预。

总结

从默认启动到指定配置启动,再到开机自启,这三种方式代表了 Redis 部署的三个不同成熟度。

默认启动适合临时测试;指定配置启动是生产环境的标配;而开机自启则是高可用架构的基石。搞懂并配置好这三步,你的 Redis 才算真正具备了"企业级"运行的能力。

相关推荐
JavaGuide2 小时前
为什么要用分布式缓存?本地缓存呢?多级缓存一致性如何保证?
redis·后端
小尔¥2 小时前
MySQL数据库认知与安装
运维·数据库·mysql
character08252 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
NineData2 小时前
NineData 新增支持 MySQL 到 openGauss PostgreSQL 兼容版数据复制链路
数据库·mysql·程序员
晨曦_子画2 小时前
C# sql语句含有 like %name%如何提高查询效率
数据库·sql·c#
云贝教育-郑老师2 小时前
【5分钟学会部署OpenTenBase V5.0 for CentOS 7.8】
数据库·oracle
阿贵---2 小时前
定时任务专家:Python Schedule库使用指南
jvm·数据库·python
TsukasaNZ2 小时前
如何为开源Python项目做贡献?
jvm·数据库·python
尽兴-2 小时前
构建坚如磐石的 Redis 服务:数据安全性与高可用架构全解析
数据库·redis·架构·主从·aof·哨兵·rdb