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 Workers | UPSTASH_REDIS_REST_URL、UPSTASH_REDIS_REST_TOKEN |
ioredis | Node.js 服务器、Vercel、自托管 / Coolify Redis | REDIS_URL |
Upstash 配置
-
访问 Upstash,使用邮箱注册账号
-
进入 Dashboard 页面,点击
Create database按钮



- 进入数据库详情页面,在 REST API 模块复制
UPSTASH_REDIS_REST_URL和UPSTASH_REDIS_REST_TOKEN到环境变量

- 确保
DEFAULT_REDIS_PROVIDER=upstash或不设置(默认即为upstash)
自托管 Redis(ioredis)配置
-
准备 Redis 实例。本地开发可使用
redis://localhost:6379;生产环境可以使用 Coolify 等托管 Redis,参考 Coolify 部署 Redis。 -
将连接地址写入
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。

二次开发
业务代码统一从 lib/redis 导入:
import { redis, checkRateLimit, getClientIPFromRequest } from "@/lib/redis";redis:统一的 Redis 客户端,提供get、set、incr、sadd、srem、sismember等方法。checkRateLimit:根据当前 Provider 执行限流检查(Upstash 为滑动窗口,ioredis 为固定窗口)。getClientIPFromRequest/getClientIPFromHeaders:获取客户端 IP。
需要直接使用 Provider 原生能力时,可导出 upstashRedis 或 ioRedis。