本站包含联盟链接——如果你通过链接注册,我们可能获得佣金。 Affiliate links.

DigitalOcean 2026 Redis 指南 — 自建 vs 托管 Valkey

DigitalOcean 2026 Redis 指南 — 自建 vs 托管 Valkey

Redis 是一个内存数据存储,被开发者广泛用于在 DigitalOcean 上进行缓存、会话存储和队列。您可以在 Droplet 上自行安装它,或使用现已更名为 Valkey 的全面管理数据库服务。本文为您介绍这两种方法,并比较定价和权衡,帮助您为自己的使用案例选择合适的方案。

什么是 Redis — 内存缓存和队列系统

Redis 是一个开源的内存键值数据存储,开发者通常将其用作 Web 应用和服务的缓存层。它之所以受欢迎,是因为读写数据的速度比基于磁盘的数据库快得多个数量级,因为数据存储在内存中。Redis 支持多种数据结构 — 字符串、哈希、列表、集合、有序集合和流 — 使其用途远不止简单的缓存。常见的用途包括存储用户会话(会话存储)、实现速率限制以防止 API 滥用、为实时通信启用 pub/sub 消息传递,以及使用列表/流作为后台任务的基本消息队列。 实际上,一旦 Redis 安装并运行,第一个测试命令是 redis-cli ping,如果服务器正常工作应该返回 PONG。从那里,您可以尝试基本操作,如 SET key valueGET key,或使用 EXPIRE key 60 设置数据过期。 在 DigitalOcean 上,您有两个主要选项:在 Droplet 上自行安装 Redis(自建),这给予您完全的控制但需要亲手维护,或使用 DigitalOcean 维护的全面管理数据库服务,它为您处理补丁、备份和故障转移。稍后会介绍一个重要问题,即 DigitalOcean 的托管产品已从"托管 Redis"更名为"Valkey",尽管其背后的引擎仍与大多数 Redis 命令和客户端库兼容。从一开始理解这一区别将在搜索控制面板或阅读文档时避免混淆。

  1. Redis 在内存中存储数据,提供低延迟,非常适合缓存和会话存储
  2. 支持多种数据结构:字符串、哈希、列表、集合、有序集合、流
  3. 使用 redis-cli ping 命令测试服务器就绪状态
  4. 可用于缓存、速率限制、pub/sub 和基本队列

重要:托管产品已更名为 Valkey

让我们意外的一点是:熟悉 DigitalOcean 托管数据库的开发者应该知道,托管 Redis 数据库产品已更名为 Valkey。这是因为原始 Redis 项目的公司 Redis Ltd. 将源代码许可证从传统开源许可证更改为限制性更强的许可证。作为响应,许多主要云提供商(包括 DigitalOcean)迁移到了 Valkey — 这是许可证更改前 Redis 的一个分支,由 Linux 基金会维护,仍然是开源的。 重要的是要理解这个更名仅适用于 DigitalOcean 的托管数据库产品。当您打开控制面板并导航到创建新数据库时,您将不再看到"Redis"作为一个选项;相反,您将看到"Valkey"。相反,如果您选择通过 apt 或 Docker 等包管理器在 Droplet 上自行安装 Redis,所有包名称、命令和配置文件都保持为"redis" — 例如,apt install redis-server/etc/redis/redis.conf 配置文件和 redis-cli 命令都保持不变。 开发者的好消息是 Valkey 被设计为与 Redis 命令兼容度近乎 100%。这意味着您现有的客户端库 — redis-py(Python)、ioredis 或 node-redis(Node.js)、Predis(PHP)或 Jedis/Lettuce(Java)— 与 Valkey 兼容,无需对应用程序进行任何代码更改。您只需更新连接字符串以指向您的新 Valkey 数据库端点。唯一的实际更改是仪表板中的产品名称、文档和 API/doctl 中显示的引擎名称 — 任何都不会影响您应用程序的代码或行为。

在 Droplet 上自行安装 Redis

如果您需要对配置进行细粒度控制,或已经有一个运行中的 Droplet 并希望通过在同一台机器上与应用程序一起运行 Redis 来节省成本,那么在 Droplet 上自建 Redis 是有意义的。从创建一个 Droplet(推荐使用 Ubuntu 或 Debian)开始,SSH 进去,更新系统,然后使用 apt update && apt install redis-server 安装。 安装后,在至少三个地方编辑位于 /etc/redis/redis.conf 的配置文件:1)设置 bind 127.0.0.1 或仅设置 VPC 专用网络 IP,以防止端口 6379 向公网开放;2)使用 requirepass your-strong-password 设置强密码以防止未授权访问;3)设置 supervised systemd 以便 systemd 正确管理该进程。然后使用 systemctl restart redis-server 重启,使用 systemctl enable redis-server 在启动时启用它。 使用 redis-cli -a your-password ping 测试连接 — 应该返回 PONG。接下来,决定持久化:您是希望数据在重启时消失(仅缓存模式),还是应该启用 appendonly yes 以将每个更改写入 AOF(仅追加文件)以实现持久化?还要设置 maxmemorymaxmemory-policy allkeys-lru 以防止 Redis 消耗所有内存并影响同一 Droplet 上的其他进程。 最后,使用 DigitalOcean 云防火墙阻止端口 6379 来自外部的流量,仅允许真正需要连接的 Droplet 或 VPC。在没有密码的情况下向互联网暴露的 Redis 是最常见的被利用的安全漏洞之一。

要点总结: 在 Ubuntu/Debian Droplet 上使用 apt install redis-server 安装
  1. 在 Ubuntu/Debian Droplet 上使用 apt install redis-server 安装
  2. 编辑 /etc/redis/redis.conf:配置 bind、requirepass 和 supervised systemd
  3. 使用 redis-cli -a your-password ping 测试 — 期望 PONG
  4. 如果需要持久化以在重启后继续存在,启用 appendonly yes

使用托管 Valkey 数据库替代方案(起价 $15/月)

对于不想自行管理补丁、备份和高可用性的团队,DigitalOcean 提供托管 Valkey 数据库服务。基础层起价为 1 vCPU、1 GiB 内存和 10 GiB 存储,费用为 $15.00/月。超过包含的 10 GiB 的额外存储费用为 $0.215/GiB/月。 通过控制面板创建一个 Valkey 数据库,选择数据库并选择 Valkey 作为引擎,或使用 CLI 命令 doctl databases create name --engine valkey --size db-s-1vcpu-1gb --region sgp1(对于泰国用户,sgp1 新加坡被推荐为最近的地区)。创建后,DigitalOcean 提供一个启用 TLS 的连接字符串,默认加密应用程序和数据库之间的流量。 托管数据库功能包括按照您设置的计划进行自动备份、通过可信来源进行访问控制(仅列出需要连接的 Droplet 或 VPC),以及在更高层中,一个备用节点在主节点失败时自动接管 — 这是您必须使用自建 Redis 自行脚本和管理的东西。 直接比较成本:在最小的 Droplet 上运行 Redis(512 MiB 内存,费用 $4/月)看起来比托管 Valkey 的 $15.00/月更便宜。但这个价格差异伴随着您管理补丁、安全、备份的时间成本,以及没有自动故障转移的停机风险。这些因素往往超过每月价格差异,具体取决于您的情况。

比较自建 vs 托管:优缺点

根据我们的实测——在自建 Droplet 上的 Redis 和托管 Valkey 之间选择需要权衡的不仅仅是每月的价格。 在成本上,自建显然更便宜,特别是如果您已经有一个 Droplet 并可以以最少的额外费用与其他服务一起运行 Redis。托管 Valkey 起价 $15.00/月,但包括所有系统管理。 控制是它们明显不同的地方。自建给予您完全的自由来调整 redis.conf 的每一行、选择您的 Redis 版本并添加自定义模块。托管 Valkey 将某些参数限制为通过控制面板或 API 可用的参数,并运行 Valkey(不是来自上游的最新 Redis,尽管它们几乎兼容)。 操作也许是最大的区别。自建要求您个人处理安全补丁、监控内存使用、配置备份(例如,卷快照或基于 cron 的 RDB 导出)并在出现问题时管理故障转移。托管 Valkey 处理所有这些 — 自动备份、DigitalOcean 的补丁和支持的层中的备用故障转移 — 大大减少您的运维负担。 在安全方面,两者都需要仔细的配置以避免公开暴露数据库。但托管 Valkey 默认启用 TLS 和可信来源,使错误配置更难出现。自建要求您自己正确配置 bind、requirepass 和防火墙规则。 高可用性在托管 Valkey 的更高层中可用,具有自动备用故障转移,而自建要求您自己构建或接受停机。 总结:自建适合具有系统管理经验且需要成本控制的团队;托管 Valkey 适合想要可靠后端基础设施而不增加运维开销的团队。

  1. 成本:自建更便宜,托管 Valkey 起价 $15.00/月,但包括运维
  2. 控制:自建允许完整的 redis.conf 调优,托管限制为控制面板/API 参数
  3. 操作:自建要求您补丁、备份和监控;托管自动化所有这些
  4. 安全:托管默认启用 TLS 和可信来源
  5. 高可用性:托管更高层包括具有自动故障转移的备用节点

何时使用每种方法(真实使用案例)

根据您的实际需求而不是偏好单独在自建和托管 Valkey 之间选择。这是常见的场景。 在 Droplet 上自建 Redis 适合实验项目或测试环境,其中高可靠性不是关键,小型应用仅将 Redis 作为临时缓存并接受重启时的数据丢失,或已经有一个合适大小的 Droplet 的团队,想在一台机器上运行多个服务以节省成本 — 例如,为了一个小项目在单个 Droplet 上运行 Redis、Node.js 和 Nginx。 托管 Valkey 适合需要将 Redis 用作许多用户的会话存储的生产系统(会话丢失直接影响用户)、需要可靠队列或 pub/sub 且具有高正常运行时间且没有专用运维团队的应用、具有要求加密传输(TLS)作为标准的安全政策的团队,或在多个 Droplet 上运行的系统,需要共享的 Redis 后端而不自己管理复制。 一个被忽视的因素:如果您的团队缺少专业的 DevOps 或系统管理员,选择托管 Valkey。自建的真实成本不仅仅是 Droplet 价格 — 它包括检查安全补丁、配置备份和在午夜处理服务器失败的紧急情况的时间。这些隐藏成本往往超过自建和托管之间的每月价格差异。

常见错误及其修复方法

在自建 Redis 时最常见的错误是将端口 6379 暴露在互联网上而没有密码 — 某些较旧的 Redis 版本中的默认值是 bind 0.0.0.0,没有 requirepass。这个漏洞不断被自动机器人扫描。通过检查 redis.conf 中的 bind 以仅允许 localhost 或内部 VPC IP、始终使用强随机密码设置 requirepass 并使用云防火墙阻止此端口来修复。 另一个错误是忘记配置持久化。如果您存储的是重要数据(不仅仅是缓存),但没有启用 appendonly yes 或设置 RDB 快照间隔,当 Droplet 重启或 Redis 进程死亡时,所有数据都会消失,因为它仅存储在内存中。 混淆也会出现,当在 DigitalOcean 控制面板中搜索"托管 Redis"并找不到任何东西时 — 许多人认为该服务已停用,没有意识到它只是更名为 Valkey。功能完全相同;仅产品名称已更改。 一个资源错误是忘记设置 maxmemory,允许 Redis 无限期地消耗内存,直到它挤压掉同一 Droplet 上的其他进程或操作系统 OOM-kill Redis。适当设置 maxmemory 并选择与您的使用案例匹配的 maxmemory-policy,例如 allkeys-lru 用于一般缓存。 最后,在没有在客户端库中指定正确的 TLS 参数的情况下连接到托管 Valkey — 虽然 TLS 默认启用,但某些较旧的客户端可能需要显式的 TLS 配置才能成功连接。

  1. 在互联网上暴露端口 6379 而没有密码是最常见的漏洞
  2. 忘记启用持久化(appendonly/RDB)意味着重启时的数据丢失
  3. 混淆 DigitalOcean 已停用托管 Redis,而他们只是将其重命名为 Valkey

生产环境最佳实践

无论您是自建还是使用托管 Valkey,都要遵循这些实践来保持系统可靠和安全。 首先,始终限制访问。无论是自建还是托管,仅允许来自真正需要连接的 Droplet 或 VPC 的连接。对于自建 Redis 使用云防火墙和 bind 配置;对于托管 Valkey 使用可信来源。 其次,始终启用身份验证和加密。对于自建 Redis 使用强随机密码设置 requirepass,并验证您的应用通过 TLS 连接到托管 Valkey,除非绝对必要,否则不禁用证书验证。 第三,选择您的 maxmemory-policy 以匹配您的数据。对于旧数据可以丢弃的纯缓存,使用 allkeys-lruallkeys-lfu。如果某些数据必须持久化并且永远不被删除,分离关键组并使用 volatile-lru 仅在旨在过期的关键字上设置 TTL。 第四,从一开始规划备份。对于自建,考虑一个定期将 RDB 文件导出到 DigitalOcean 卷或 Spaces 桶的 cron 作业。对于托管 Valkey,查看包括的自动备份计划并至少测试一次恢复以验证其工作。 第五,始终持续监控资源使用。启用免费的 DigitalOcean 监控来观察您的 Droplet 上的 CPU、内存和带宽,或通过控制面板检查托管 Valkey 指标,以便在资源用尽之前计划扩展。 最后,在您的应用程序代码中使用连接池和合理的超时以防止在 Redis/Valkey 响应缓慢时挂起,并将客户端库保持更新到最新版本以确保与 Redis 和 Valkey 的持续兼容性。

  1. 始终使用防火墙/可信来源限制访问,无论是自建还是托管
  2. 始终启用 requirepass 和 TLS;除非有充分理由,否则不要禁用加密
  3. 选择 maxmemory-policy 以匹配您的数据类型(纯缓存 vs 部分持久化)

领取 $200 免费额度 →

常见问题(FAQ)

Valkey 和 Redis 有什么区别?
Valkey 是在 Redis Ltd. 更改原始源代码的许可证后创建的 Redis 开源分支。它在 Linux 基金会下开发,支持几乎所有与 Redis 相同的命令和协议。DigitalOcean 现在将 Valkey 用作其托管数据库产品的引擎,而不是 Redis。
如果我在 Droplet 上自行安装 Redis,我是否仍然使用名称 Redis?
是的,通过 apt 或 Docker 安装仍然使用包名称和命令作为"redis",完全如前所述。重命名为 Valkey 仅适用于 DigitalOcean 的托管数据库产品。
我现有的客户端库(如 redis-py 或 ioredis)能与托管 Valkey 兼容吗?
是的,因为 Valkey 被设计为与 Redis 的协议和命令兼容度近乎 100%。您只需要更改连接字符串以指向您的 Valkey 数据库端点;不需要进行应用程序代码更改。
托管 Valkey 的起价是多少?
基础层起价为 1 vCPU、1 GiB 内存和 10 GiB 存储,费用为 $15.00/月。超过 10 GiB 的额外存储费用为 $0.215/GiB/月(截至 2026 年 7 月的定价 — 检查 DigitalOcean 的网站以了解当前费率)。
我应该选择自建还是托管 Valkey?
这取决于您的需求。对于数据丢失可接受的小型项目或测试,在 $4/月的 Droplet 上自建更具成本效益。对于需要高正常运行时间且没有专业运维团队的生产系统,$15.00/月的托管 Valkey 在您考虑管理安全补丁、备份和紧急情况的时间时为自己付款。
将 Redis 端口 6379 暴露在互联网上是否安全?
不是。将 bind 限制为 localhost 或专用 VPC IP,始终使用强随机密码设置 requirepass,并使用 DigitalOcean 云防火墙阻止此端口来自外部互联网。公开暴露而没有密码的 Redis 是自动扫描和滥用的常见目标。