Surgio
Changelog
GitHub
Changelog
GitHub
  • 指南

    • 介绍
    • 快速上手
    • 自定义

      • 配置文件
      • Provider 服务提供者
      • Template 模板
      • Artifact 产品
    • 客户端规则维护指南

      • sing-box
      • Clash
      • 代码示例
    • 托管 API 功能
    • 命令行功能
    • 常见问题
    • v2 升级指南
    • v3 升级指南
    • 社区学习资源
  • 进阶

    • Surge 进阶 - 生成 SSR 订阅
    • 自定义过滤器
    • 编写更复杂的自定义 Provider
    • 自动化更新规则仓库
    • 快速搭建托管 API

      • 前言
      • 部署 - Zeabur
      • 部署 - Netlify Functions
      • 部署 - Railway
      • 部署 - Vercel
    • 开启 Redis 缓存
    • 苹果服务的连接策略推荐
Deployed on Zeabur

开启 Redis 缓存

如果你正在使用 API 网关,并且加入了多个订阅和远程片段,那么开启 Redis 缓存可以有效降低冷启动的时间。

原本的本地缓存实现方式是使用文件和内存缓存,但是这种方式存在一个问题,就是每次重新部署 Serverless 平台时,都会清空缓存。内存缓存甚至会在进程挂起时被清空。这就导致了冷启动时间变长。Redis 缓存因为运行在独立的进程中,所以不会受到这些影响。

新建一个免费的 Redis 实例

  • Railway 和 Zeabur 都提供 Redis 服务
  • Redis Cloud
  • Upstash

上面这两个地方服务提供了额免费的 Redis 实例,性能已经完全满足 Surgio 的需求。你可以使用你自己的 Redis 数据库,只要能够从外网访问即可。

需要注意,假如你的 Surgio 服务部署在美西,那 Redis 也最好在美西。Railway 默认的部署区域是 us-west-1,Vercel 的默认部署区域是 us-east-1,Netlify 的默认部署区域是 us-east-2。

新建成功之后,上面的平台应该会提供一个连接地址,格式类似:

redis://:xxx...@some-thing-like-35533.upstash.io:35533

如果你开启了 TLS,则连接地址应该是:

rediss://:xxx...@some-thing-like-35533.upstash.io:35533

配置 Redis

在所有环境下开启

// surgio.conf.js

module.exports = {
  cache: {
    type: 'redis',
    redisUrl: 'redis://:xxx...@some-thing-like-35533.upstash.io:35533',
  },
}

仅在部分环境下开启

请在需要开启 Redis 的环境下配置环境变量 REDIS_URL。不建议在本地生成配置时也连接 Redis,这样反而会变慢。

提示

Zeabur 的 Redis 环境变量是 REDIS_URI。

// surgio.conf.js

module.exports = {
  cache: process.env.REDIS_URL || process.env.REDIS_URI
    ? {
      type: 'redis',
      redisUrl: process.env.REDIS_URL || process.env.REDIS_URI,
    }
    : undefined,
}

以 Netlify 为例,你可以在后台下图位置增加环境变量。

帮助我们改善此页面!
Last Updated:
Contributors: Roy Li
Next
苹果服务的连接策略推荐