开启 Redis 缓存
如果你正在使用 API 网关,并且加入了多个订阅和远程片段,那么开启 Redis 缓存可以有效降低冷启动的时间。
原本的本地缓存实现方式是使用文件和内存缓存,但是这种方式存在一个问题,就是每次重新部署 Serverless 平台时,都会清空缓存。内存缓存甚至会在进程挂起时被清空。这就导致了冷启动时间变长。Redis 缓存因为运行在独立的进程中,所以不会受到这些影响。
新建一个免费的 Redis 实例
上面这两个地方服务提供了额免费的 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,这样反而会变慢。
// surgio.conf.js
module.exports = {
cache: process.env.REDIS_URL
? {
type: 'redis',
redisUrl: process.env.REDIS_URL,
}
: undefined,
}
以 Netlify 为例,你可以在后台下图位置增加环境变量。