2025-09-23 11:40:12 +08:00
|
|
|
import 'server-only'
|
2025-09-29 12:06:16 +08:00
|
|
|
import { createClient, type RedisClientType } from 'redis'
|
2025-09-23 11:40:12 +08:00
|
|
|
|
2025-09-29 12:06:16 +08:00
|
|
|
const globalForRedis = globalThis as { redis?: RedisClientType }
|
|
|
|
|
|
2025-10-21 19:12:17 +08:00
|
|
|
const { REDIS_HOST, REDIS_PORT, REDIS_USERNAME, REDIS_PASSWORD } = process.env
|
2025-09-29 12:06:16 +08:00
|
|
|
if (!globalForRedis.redis) {
|
2025-10-21 19:13:38 +08:00
|
|
|
const url = (REDIS_USERNAME || REDIS_PASSWORD)
|
2025-10-21 19:12:17 +08:00
|
|
|
? `redis://${REDIS_USERNAME}:${REDIS_PASSWORD}@${REDIS_HOST}:${REDIS_PORT}`
|
|
|
|
|
: `redis://${REDIS_HOST}:${REDIS_PORT}`
|
|
|
|
|
console.log('test url', url)
|
|
|
|
|
globalForRedis.redis = createClient({ url })
|
2025-09-29 10:35:16 +08:00
|
|
|
}
|
|
|
|
|
|
2025-09-29 12:06:16 +08:00
|
|
|
const redis = globalForRedis.redis
|
|
|
|
|
if (process.env.NODE_ENV === 'production') {
|
|
|
|
|
await redis.connect()
|
2025-09-29 10:35:16 +08:00
|
|
|
}
|
2025-09-23 11:40:12 +08:00
|
|
|
|
|
|
|
|
export default redis
|