Nodejs에 hset, hmset 데이터 저장하기

14824 단어 node.jsredisnode.js

Hash 데이터타입

KEY
|_field1 : value1
|_field2 : value2
|_...

redis 모듈 사용시 다음 3가지 방식으로 Hash 타입 데이터를 넣을 수 있다.

client.HSET('key', {
  field1: 'value1',
  field2: 'value2'
});

client.HSET('key', ['field1', 'value1', 'field2', 'value2']);

client.HSET('key', [['field1', 'value1'], ['field2', 'value2']]);

키값과 필드 값으로 불러오는 방법

client.HMGET('key', ['field1', 'field2']);

예제 코드

편의를 위해 변수명은 간단한걸 사용

// redis.js
const CONFIG = require("../config/config");
const redis = require("redis");

// redis 연결 코드

module.exports = {
  set: async (key, value, second) => {
    // second가 있다면 set + expire 같이 설정
    if (second) return await client.SETEX(key, second, value);
    return await client.SET(key, value);
  },
  get: async (key) => {
    return await client.GET(key);
  },
  hset: async (key, fieldAndValue, second) => {
    /*
     *  ('key', { field1: 'value1', field2: 'value2'});
     *  ('key', ['field1', 'value1', 'field2', 'value2']);
     *  ('key', [['field1', 'value1'], ['field2', 'value2']]);
     */
    await client.HSET(key, fieldAndValue);
    if (second) await client.EXPIRE(key, second);
    return;
  },
  hget: async (key, feild) => {
    /*
     * .HMGET('key', ['field1', 'field2']);
     * .HGET('key', field);
     */
    if (Array.isArray(feild)) {
      return await client.HMGET(key, feild);
    }
    return await client.HGET(key, feild);
  },
  delete: async (key) => {
    return await client.DEL(key);
  },
};

const redis = require("redis.js");

// 값 넣기
await redis.hset("exampleKeyOne", {
  email: "[email protected]",
  nickname: "admin"
});

await redis.hset("exampleKeyTwo", [
  "email", "[email protected]",
  "nickname", "admin"
]);

await redis.hset("exampleKeyThree", [[
  "email", "[email protected]"],[
  "nickname", "admin"]
]);

// 값 불러오기
const one = await redis.hget("exampleKeyOne", ["email", "nickname"]);
console.log(one);
// [ '[email protected]', 'admin' ]

const two = await redis.hget("exampleKeyTwo", "email");
console.log(two);
// [email protected]

참고

https://github.com/redis/node-redis/issues/1746

좋은 웹페이지 즐겨찾기