[REDIS] ๐ Redis๋ฅผ ํด๋ผ์ฐ๋๋ก ์ฌ์ฉํ์ [Redislabs] (tistory.com)
[REDIS] ๐ Node.js ์์ redis ๋ชจ๋ ์ฌ์ฉ๋ฒ (์บ์ฑ & ์ธ์ ์คํ ์ด) (tistory.com)
const express = require('express');
const dotenv = require('dotenv');
const { createClient } = require('redis');
module.exports = async () => {
dotenv.config(); // envํ๊ฒฝ๋ณ์ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
//* Redis ์ฐ๊ฒฐ
// redis[s]://[[username][:password]@][host][:port][/db-number]
const client = createClient({
url: `redis://${process.env.REDIS_USERNAME}:${process.env.REDIS_PASSWORD}@${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/${process.env.REDIS_DB_NUM}`
});
client.on('connect', () => {
console.info('Redis connected!');
});
client.on('error', (err) => {
console.error('Redis Client Error', err);
});
await client.connect();
return client
}
let redisCli= "";
require('../db/redisCon.js')().then((res) => redisCon = res);
// GET
router.get('/', (req, res, next) => {
await redisCli.get('username');
});
// POST
router.post('/set', (req, res, next) => {
await redisCli.set('username', 'inpa');
});
// DELETE
router.delete('/del', (req, res, next) => {
// exist : ํค๊ฐ ์กด์ฌํ๋์ง
const n = await redisCli.exists('username'); // true: 1 , false: 0
if(n) await redisCli.del('username');
});
// PUT
router.put('/rename', (req, res, next) => {
// username์ด๋ผ๋ ํค๊ฐ์ด ์๋ค๋ฉด ๊ทธ ๊ฐ์ helloname์ผ๋ก ๋ฐ๊ฟ
redisCli.rename('username', 'helloname');
});
// setex
await redisCli.setex('username', 3600, 'inpa'); // setex ๋ช
๋ น์ด๋ก ํค-๋ฐธ๋ฅ์ ๊ธฐ๊ฐ์ ํ๋ฒ์ ์ง์ ํ ์๋ ์๋ค.
// ttl
if(redisCli.ttl('username') < 300) {
// usename ํค ๋จ์ ์๊ฐ์ด 300์ด ์ดํ ์ผ ๊ฒฝ์ฐ...
}