본문 바로가기

항해99_10기/105일의 TIL & WIL

[7주차] [20221227] Redis Node.js에서 활용하기

Redis 설정하기

require('dotenv').config();
const { createClient } = require('redis');
console.log(process.env.REDIS_USERNAME);

const redisClient = createClient({
  url: `redis://${process.env.REDIS_USERNAME}:${process.env.REDIS_PASSWORD}@${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/0`,
  legacyMode: true, // 반드시 설정 !!
});

redisClient.on('error', err => {
  console.error('Redis Client Error', err);
});

(async () => {
	await redisClient.connect();
	console.log('Redis connected!');
})()

기본  CRUD 중 값을 가져올 때, 콜백함수 사용

// lPush : 왼쪽에서 배열에 밀어 넣기
// rPush : 오른쪽에서 배열에 밀어 넣기
await redisClient.lPush('page', `{ id: 3, content: 'asdf' }`);

//값을 받아올때, 콜백으로만 받아와짐
// reply 값으로 객체를 스트링 타입으로 받으므로, JSON.parse() 이용
await redisClient.lLen('page', function (err, reply) {
    console.log(reply);
  });
  let data;
  await redisClient.lRange('page', 0, -1, function (err, reply) {
    console.log(reply);
    data = JSON.parse(reply);
  });

redis JSON 라이브러리 사용 => return 값으로 JSON 객체를 그대로 받음 

  await redisClient.json.set('noderedis:jsondata', '$', {
    name: 'Roberta McDonald',
    pets: [
      {
        name: 'Rex',
        species: 'dog',
        age: 3,
        isMammal: true,
      },
      {
        name: 'Goldie',
        species: 'fish',
        age: 2,
        isMammal: false,
      },
    ],
  });

  const results = await redisClient.json.get('noderedis:jsondata', {
    path: ['.pets[1].name', '.pets[1].age'],
  });