[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์ดˆ ์ดํ•˜ ์ผ ๊ฒฝ์šฐ...
   }