在 CentOS 上安装 Redis Stack
Redis Stack 简介
Redis Stack 是基于 Redis 的扩展发行版,在 Redis 的键值存储和数据结构能力之上,集成了多种面向应用场景的功能模块。它让开发者可以在同一套 Redis 服务中处理缓存、JSON 文档、全文检索、向量检索、时间序列和概率数据结构等任务,而不必为这些能力分别部署独立数据库。2 5
常见组件包括 RedisJSON(以 JSON 文档形式读写数据)、RediSearch(索引、全文及向量检索)、RedisTimeSeries(时间序列数据)和 RedisBloom(布隆过滤器等概率数据结构)。例如,应用可以将商品信息以 JSON 保存,再通过搜索索引按关键词或向量查询;也可以将监控指标写入时间序列并进行聚合分析。2
Redis Stack 过去通过预装这些模块,降低了逐个安装和配置模块的复杂度。Redis Insight 则是可视化管理工具,可浏览数据、执行查询和查看结构;它包含在 redis/redis-stack 完整镜像中,而 redis/redis-stack-server 镜像只提供服务端。3
从 Redis 8 开始,Redis Stack 的模块功能已并入统一的 Redis Open Source 发行版。Redis 官方已停止发布旧版 Redis Stack 6.2、7.2 和 7.4 的维护更新,因此 Redis Stack 主要适用于仍需兼容旧版本或既有部署的场景;新项目优先评估 Redis 8。1 2
**版本提示:**Redis 官方已停止发布 Redis Stack 6.2、7.2 和 7.4 的维护更新。Redis 8 将 Redis Stack 中的功能整合到统一发行版中。因此,旧项目确实依赖 Redis Stack 时可以按本文使用容器部署;新项目建议直接安装 Redis 8。1 2
1. 选择安装方式
CentOS 服务器上建议使用 Docker 部署 Redis Stack。容器方式将 Redis Stack 与宿主机依赖隔离,便于固定镜像版本、升级或回滚。Redis 官方文档提供了 redis/redis-stack 和 redis/redis-stack-server 两种镜像:前者还包含 Redis Insight,适合开发和本机调试;后者仅包含服务端,更适合服务器运行。3
官方 RPM 安装说明当前面向 RHEL 9、Rocky Linux 9 等受支持平台,不应将该 RPM 仓库命令直接套用到 CentOS 7、CentOS 8 等不同版本上。CentOS 7/8 等老系统建议优先采用容器,或迁移到仍受支持的操作系统版本。4
2. 检查 Docker
先确认服务器已安装并启动 Docker:
bash
docker --version
sudo systemctl status docker
如果提示找不到 docker,请先根据 CentOS 的具体版本安装并启动 Docker Engine。CentOS Linux、CentOS Stream 及其主版本对应的安装步骤可能不同,使用 Docker 官方针对该系统版本的安装文档,不要混用其他发行版的仓库配置。
3. 启动 Redis Stack
先创建持久化数据目录:
bash
sudo mkdir -p /opt/redis-stack/data
生产环境或仅需 Redis Stack 服务端时,建议使用 redis/redis-stack-server。以下示例设置访问密码、启用 AOF 持久化,并将端口仅绑定到本机,避免 Redis 未经防火墙保护直接暴露到公网:
bash
sudo docker run -d \
--name redis-stack \
--restart unless-stopped \
-p 127.0.0.1:6379:6379 \
-v /opt/redis-stack/data:/data \
-e REDIS_ARGS="--requirepass 请替换为强密码 --appendonly yes" \
redis/redis-stack-server:latest
将示例中的密码替换成随机生成的强密码。Redis 官方镜像支持通过 REDIS_ARGS 传入 Redis 参数,也支持将主机目录挂载到容器的 /data 保存数据。3 生产部署还应评估并固定经过验证的镜像版本标签,而不是长期依赖 latest。
如果希望使用 Redis Insight 网页界面,可以改用完整镜像并额外发布 8001 端口:
bash
sudo docker rm -f redis-stack
sudo docker run -d \
--name redis-stack \
--restart unless-stopped \
-p 127.0.0.1:6379:6379 \
-p 127.0.0.1:8001:8001 \
-v /opt/redis-stack/data:/data \
-e REDIS_ARGS="--requirepass 请替换为强密码 --appendonly yes" \
redis/redis-stack:latest
Redis Insight 默认通过 8001 端口访问。以上命令将该端口也限制在本机;如需远程管理,应使用 SSH 隧道或可信内网访问,不建议直接向公网开放。3
4. 验证服务
查看容器状态和启动日志:
bash
sudo docker ps --filter name=redis-stack
sudo docker logs --tail 50 redis-stack
执行 Redis 健康检查:
bash
sudo docker exec -it redis-stack redis-cli -a '请替换为强密码' PING
正常时会返回:
text
PONG
命令行参数 -a 可能被系统记录在 shell 历史或进程列表中。正式环境可以通过交互方式输入密码,或按团队的密钥管理规范传入凭据。也可以进入容器后运行 redis-cli,再使用 AUTH 完成认证。
5. 日常管理
bash
# 查看状态
sudo docker ps -a --filter name=redis-stack
# 查看日志
sudo docker logs -f redis-stack
# 停止、启动和重启
sudo docker stop redis-stack
sudo docker start redis-stack
sudo docker restart redis-stack
# 删除容器(不会删除已挂载的 /opt/redis-stack/data)
sudo docker rm -f redis-stack
升级前先备份 /opt/redis-stack/data,再拉取目标镜像并重建容器。容器删除不等于数据删除:只要保留挂载目录,数据仍在宿主机上;误删挂载目录则会丢失该目录中的数据。
6. 防火墙与生产安全
示例将 Redis 的 6379 和 Redis Insight 的 8001 端口绑定到 127.0.0.1,因此只能由服务器本机访问。如果应用部署在同一台机器上,这通常是更安全的默认设置。若应用在其他服务器,应优先通过私有网络、VPN 或受控安全组开放访问,并限制来源 IP;不要只设置密码后就将 Redis 暴露给整个互联网。
还应定期备份数据目录,检查容器日志和磁盘空间,并在升级前验证目标镜像与现有数据、模块命令及客户端兼容。
7. 新项目:考虑安装 Redis 8
Redis 8 已将 Redis Stack 的模块能力整合进 Redis Open Source 发行版,通常无需单独安装旧版 Stack。2 对新项目,应参考 Redis 官方当前的 Redis 安装方式,并按服务器操作系统版本选择受支持的 RPM 或容器部署方案。若应用依赖旧版 Stack 的特定行为,先在测试环境验证迁移兼容性,再切换生产服务。