๐ง ์ํฉ
๋ฆฌํ๋ ์ฌ ํ ํฐ์ ์ ์ฅํ๋ ๊ณณ์ผ๋ก
๊ธฐ์กด์ ์ฌ์ฉํ๋ aws rds ์ ์ฅ์์ prisma๋ฅผ ์ฌ์ฉํด ์ปฌ๋ผ์ ๋๋ ค์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฐ๋ฐ ๋จ์ ์ ๋ง๋ฃ์๊ฐ์ด ๋๋ฉด ์ง์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ง ์๋ ์ด์ ์ญ์ ๊ฐ ๋์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
์ด์ ๋ฐํด ๋ ๋์ค ๋ผ๋ ์ ์ฅ์๋ ๋ง๋ฃ์๊ฐ์ด ๋๋ฉด ์ ์ ๋ก ์ญ์ ๊ฐ ๋๋ค๊ณ ํ๋ค.
ํ ํฐ ์ ์ฅ์๋ก ์ ํฉํ ๊ฒ ๊ฐ์ ๊ณต๋ถํด ๋ณด๊ธฐ๋ก ํ๋ค.
๐๏ธ ๊ณผ์
Redis์ ๋ํด ์๋๊ฒ ์ ๋ง ๋จ 1๋ ์์๋ ์ํ๋ก ์์ํ๋๋ฐ,
์ฐพ์๋ณด๋ ์ ๋ง ๋ง์๊ฒ ๋์๋ค.
๋๋ฌด ๋ง์ ์๋ฃ๊ฐ ์์์ง๋ง, ์๋ฃ๊ตฌ์กฐ์ ๋ํ ๊ณต๋ถ๊ฐ ๋ถ์กฑํ๋ ๋๋ ํด์ฌ๋ฅผ ์ ์ธํ ๋๋ถ๋ถ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ์ง ๋ชปํ๋ค.
์ผ๋จ ์ง๊ธ๊น์ง ์๊ฒ๋ ๋ ๋์ค์ ๋ํด ์ ๋ฆฌํด ๋ณด์๋ฉด,
- ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ค.
- ์๋ฃ๋ฅผ ์ฐพ๋ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
- ์๋ฒ๋ฅผ ์ฌ์์ ํ๊ฒ๋๋ฉด ๋ฐ์ดํฐ ์ ์ค . ๋ฐ๋ผ์ ๋ ๋ผ๊ฐ๋ ์๊ด ์๋ ์ ๋ค์ ๋ณด๊ดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ์๋ฃ๊ตฌ์กฐ๊ฐ ๋ง๋ค. hash, set, sorted set, list ๋ฑ ์ด ๋ชจ๋ ๊ฑธ ์ ๊ณตํ๋ค.
- ํค๋ฒจ๋ฅ ๊ตฌ์กฐ๋ผ ์ฟผ๋ฆฌ๋ฌธ ํ์ ์๋ค.
๋ฅํ๊ฒ ๋ค์ด๊ฐ๋ฉด ํ๋ ๋๋ ์์ด ๊ฐ๊บผ ๊ฐ์์, ์ผ๋จ์ ๊ตฌํ์ ์ฐ์ ์ผ๋ก ๋์๋ค.
์๋ฃ๊ตฌ์กฐ์ ๋ํ ๋ถ๋ถ์ผ๋ฅด ๊ณต๋ถํด์ผ๊ฒ ๋ค๋ ํ์์ฑ์ ๋๊ผ๋ค.
๋ ๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋จผ์ ์ค์น๋ฅผ ์งํํ๋ค.
brew install redis
brew services start redis
redis-server -v # ๋ฒ์ ํ์ธ
npm init -y
npm i redis -S # node.js redis client
๋ฉ์ถ๊ฑฐ๋ ์ฌ์์ ํ ๋๋ ์๋์ ๋ช ๋ น์ด ์ฌ์ฉํ๋ฉด ๋๋ค.
brew services stop redis
brew services restart redis
ํํ ํ
์คํธ๋ฅผ ์งํํ๊ณ ,
import๋ฅผ ํด์ ์ฝ๋๋ฅผ ์์ฑํด์ค๋ค.
import redis from 'redis';
import RedisStore from 'connect-redis';
const redisClient = redis.createClient({
url: `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}`,
password: process.env.REDIS_PASSWORD,
lagacyMode: true
});
redisClient.connect();
๋ ๋์ค ํํ์ด์ง์์ ์ฌ์ฉํ๊ณ ์๋ db ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋๋ฐ,
ํด๋น ์ ๋ณด๋ฅผ ์ฐธ๊ณ ํ์ฌ, ๋น๋ฐ๋ฒํธ, port, ์๋ํฌ์ธํธ ๋ฅผ ๊ฐ์ ธ์ ํ๊ฒฝ๋ณ์๋ก ์ค์ ํ ๋ฃ์ด์ฃผ์๋ค.
redis๋ ๊ฐ๋จํ๊ฒ ๋ช ๋ น์ด ๋ช๊ฐ๋ง ์์๋ ์ฌ์ฉํ ์๋ ์๋ค.
//ํ ํฐ ์ญ์
await redisClient.del('refreshToken');
//ํ ํฐ ์์ฑ
await redisClient.set('refreshToken', getKakaoRefreshToken);
//ํ ํฐ ๋ง๋ฃ๊ธฐํ ์ค์ _ ์ด๋จ์๋ก
await redisClient.expire('refreshToken', 60 * 60 * 24);
๋ง๋ ๋ ๋์ค ํ ํฐ์ ์๋ ์ฌ์ดํธ์์ Redis Insight๋ฅผ ์ค์นํด ํ์ธํ ์ ์๋ค.
https://redis.com/redis-enterprise/redis-insight/
๐ซ ๋๋์
๋ ๋์ค์ ๋ํด ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๋ค ๋ณด๋ ์ด์ฌํ ์ฐพ์๋ณด์๋๋ฐ,
๋๋ฌด ๋ง์ ์ ๋ณด๋ค ์์
๋ชจ๋ฅด๋ ์๋ฃ๊ตฌ์กฐ๋ค์ด ์์ฐฝ๋์ค๋๊น ๋ง๊ทธ๋๋ก ์นด์ค์ค์๋ค.
๋ฉ๋ถ์ ๋น ์ ธ์๋ ๋์ ๋ด๋ฐฐ์บ ๋๊ธฐ๋ถ๊ป ๋์์ ์์ฒญํ๊ณ ,
๋ด๊ฐ ํ๋ ค๊ณ ํ๋๊ฑธ ๋๋ฐ๋ก ๋ณผ์ ์๊ฒ ํด์ฃผ์ จ๋ค.
๊ธฐ๋ฅ ๊ตฌํ.
์์ง ๋ง์ด ๋ถ์กฑํ๊ธฐ๋๋ฌธ์ ํ๋ฒ์ ์ด๋ฐ ๋ด์ฉ๋ค์ ์ดํดํ ์๋ ์์ง๋ง,
์ด๋ฒ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด์์ผ๋, ๋ค์์๋ ์๋ฃ๊ตฌ์กฐ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์ข๋ ์ ์ดํดํ๊ณ ์ฌ์ฉํ๊ณ ์ถ๋ค.
์ฐธ๊ณ ํ ์ฌ์ดํธ
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
23/12/11 TIL __ TypeScript (0) | 2023.12.11 |
---|---|
23/12/10 TIL __ AWS EC2 ๋ฐฐํฌ (redis, ์นด์นด์ค passport) ์๋ฌ (0) | 2023.12.11 |
23/12/08 TIL __ Passport kakao ์นด์นด์ค ์ ๋ต ๋ฝ๊ฐ๊ธฐ (0) | 2023.12.09 |
23/12/07 TIL __ Passport ๋ก์ปฌ (0) | 2023.12.08 |
23/12/06 TIL __ ์ธ์ ์ ์ฅ ํ ์ถ๋ ฅ undefined (1) | 2023.12.06 |