Menu

Redis 集成

Redis 是商业化项目中常用的基础设施,主要用于缓存、限流器、会话存储等与业务逻辑强相关的功能。

NEXTY.DEV 模板对 Redis 进行了多 Provider 封装,默认支持两种运行方式:

  • Upstash:基于 REST API 的无服务器 Redis,兼容 Edge / Cloudflare Workers 等运行时。
  • ioredis:基于 TCP 连接的自托管 Redis,适用于 Node.js 服务器或 Vercel 部署。

通过环境变量 DEFAULT_REDIS_PROVIDER 选择 Provider(默认 upstash)。当对应 Provider 的凭证未配置时,相关功能会自动降级,不会影响其他业务逻辑。

提示 模板在邮件订阅功能中内置了限流器示例,它会根据 Redis 配置自动决定是否启用。

选择 Provider

Provider适用场景环境变量
upstash(默认)无服务器部署、Edge / Cloudflare WorkersUPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN
ioredisNode.js 服务器、Vercel、自托管 / Coolify RedisREDIS_URL

Upstash 配置

  1. 访问 Upstash,使用邮箱注册账号

  2. 进入 Dashboard 页面,点击 Create database 按钮

Create database
Create database
Create database
  1. 进入数据库详情页面,在 REST API 模块复制 UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKEN 到环境变量
upstash api
  1. 确保 DEFAULT_REDIS_PROVIDER=upstash 或不设置(默认即为 upstash

自托管 Redis(ioredis)配置

  1. 准备 Redis 实例。本地开发可使用 redis://localhost:6379;生产环境可以使用 Coolify 等托管 Redis,参考 Coolify 部署 Redis

  2. 将连接地址写入 REDIS_URL,并设置 Provider:

DEFAULT_REDIS_PROVIDER=ioredis
REDIS_URL=redis://localhost:6379

注意 ioredis 依赖 Node.js net 模块,因此不支持 Edge 和 Cloudflare Workers。在这些运行时请使用 Upstash Provider。

验证

现在你可以再次尝试在页面 Footer 提交邮件订阅:

  • 如果使用 Upstash,查看 Upstash Redis 的 Data Browser 页面,有新增数据,则说明订阅的限流器生效了。
  • 如果使用 ioredis,可通过 redis-cli 或 RedisInsight 查看对应 key。
upstash data browser

二次开发

业务代码统一从 lib/redis 导入:

import { redis, checkRateLimit, getClientIPFromRequest } from "@/lib/redis";
  • redis:统一的 Redis 客户端,提供 getsetincrsaddsremsismember 等方法。
  • checkRateLimit:根据当前 Provider 执行限流检查(Upstash 为滑动窗口,ioredis 为固定窗口)。
  • getClientIPFromRequest / getClientIPFromHeaders:获取客户端 IP。

需要直接使用 Provider 原生能力时,可导出 upstashRedisioRedis