π· Upstash
Redis λ₯Ό νλ‘μ νΈμ λΆμ΄κΈ°λ‘ νμ λ μ¬λ¬ μ νμ§κ° μμλ€. ( Docker, λ‘컬 μ€μΉ λ±λ± )
νμ§λ§ κΈ°μ‘΄ λ°°ν¬ νκ²½μ κ³ λ €νμ λ μλ²λ¦¬μ€ νκ²½μμ vercel λ‘ λ°°ν¬κ° λμ΄μλ λ§νΌ Redis λ₯Ό HTTP κΈ°λ° μλ²λ¦¬μ€ νκ²½μμλ μΈ μ μλλ‘ μ΅μ ν λμ΄μλ Upstash λ₯Ό μ΄μ©ν΄ Redis Cloud λ₯Ό μ¬μ©νκΈ°λ‘ νλ€.
π· TLS μλ¬
μΈκΈ° κ²μμ΄ κΈ°λ₯μ μν΄ Redis λ₯Ό μ°κ²°νλλ°, npm run dev ν μλ²μμ κ²μ API λ₯Ό νΈμΆνμλ§μ μλ¬κ° λ°μνλ€.
β μμΈ
μ²μμ Redis μ°κ²°μ μν΄ .env.local νμΌμ μλμ κ°μ΄ μ μ μ£Όμλ§ λ£μλ€.
REDIS_URL=redis://:λΉλ°λ²νΈ@gorgeous-wren-38298.upstash.io:6379
κ·Έλ°λ° μ΄ μ£Όμλ λΉμνΈνλ Redis μ°κ²° λ°©μ ( redis:// ) μΌλ‘, Upstash μ²λΌ 보μμ μ€μμνλ ν΄λΌμ°λ Redis λ κΈ°λ³Έμ μΌλ‘ TLS ( μνΈν ν΅μ ) μ κ°μ νλ€.
κ·Έλμ μλ²μμ Redis μ μ°κ²°μ μλνλ©΄ μ°κ²°μ΄ λκΈ°κ³ ( ECONNRESET ), μμ²μ΄ κ³μ μ€ν¨ν΄μ MaxRetiresPerRequestError κ° λ°μνλ€.
β ν΄κ²° λ°©λ²
.env.local μμ νλ²μ URL μ μ€μ νλ λμ μλμ²λΌ TLS μ΅μ μ μ§μ μ€μ ν redis ν΄λΌμ΄μΈνΈ μ½λλ‘ μμ νλ€.
const Redis = require('ioredis');
const redis = new Redis({
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
password: process.env.REDIS_PASSWORD,
tls: {}, // TLS νμ±ν
maxRetriesPerRequest: 3, // λ무 λ§μ΄ μ¬μλ μ νλλ‘ μ ν
});
module.exports = redis;
μ΄λ κ² μ€μ νκ³ μ€ννλλ μλ¬ μμ΄ μ μλνλ€.
π‘ TLSλ?
TLS ( Transport Layer Security ) λ λ°μ΄ν°λ₯Ό μνΈνν΄μ μμ νκ² μ£Όκ³ λ°λ 보μ νλ‘ν μ½μ΄λ€.
- μ°λ¦¬κ° μμ£Ό μ°λ HTTPS λ TLS μμμ λμνλ€.
- Redis κ°μ μΈλΆ μλΉμ€μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ λ μ€κ°μμ λκ΅°κ° νμ³λ³΄κ±°λ μ‘°μνμ§ λͺ»νκ² λ§μμ€λ€.
- Upstash μ κ°μ Redis ν΄λΌμ°λλ μ΄κ±Έ κΈ°λ³Έ 보μ μ μ± μΌλ‘ μꡬνλ€.
'Project > Piggy AI' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[PiggyAI] μΆμ² μΉ΄ν List μΊμ± μ²λ¦¬λ₯Ό ν΅ν μ±λ₯ μ΅μ ν λ° λΉμ© κ°μ (0) | 2025.05.23 |
---|