레디스에는 다양한 저장방법이 존재한다.

1. sadd와 smembers 를 활용한 데이터 저장 및 가져오기 방법이다.

const REDIS = require('redis');
var redis = REDIS.createClient(6379, '127.0.0.1');

//test3에 데이터 넣기
var tempobj={text1: "안녕1", text2:"내용1",number : 1111, date:new Date()};
redis.sadd("test3",JSON.stringify(tempobj));

tempobj={text1: "안녕2", text2:"내용2",number : 2222, date:new Date()};
redis.sadd("test3",JSON.stringify(tempobj));

redis.smembers("test3",(err,res)=>{  //test3을 키로 활용하여 배열형식으로 데이터가 저장!
    if(!err){
        console.log(res.length);
    }
});

redis.quit();

물론 저장되는 데이터의 형태는 일반 문.자.열 형태로 저장이 된다.

즉, 데이터를 "조건"에 따라서 가져올 수 있는 방법은 test3으로 불리우는 키 값이다. 그 이외의 조건은 가져온 데이터에서 필터링 해야 된다.

 

2. hset, hget을 활용한 방법이다.

const REDIS = require('redis');
var redis = REDIS.createClient(6379, '127.0.0.1');

//test4에 target_id를 키 처럼 활용해서 데이터 넣기
var tempobj={text1: "안녕1", text2:"내용1",number : 1111, date:new Date()};
redis.hset('test4','target_id',JSON.stringify(tempobj) ); 
redis.hget('test4','target_id',function(err,obj){
    obj=JSON.parse(obj);
    console.log(obj);
});
redis.quit();

test4 컬렉션에 target_id 를 키로 활용해서 데이터를 넣고 가져오는 방법이다. 해당 방법은 마찬가지로 텍스트만 저장이되며 키가 2개인점이 독특하지만 마찬가지로 조회를 하는 경우 어렵다.

 

 

3. 앞서 소개한 zadd, zrangebyscore 방법이다.

const REDIS = require('redis');
var redis = REDIS.createClient(6379, '127.0.0.1');

var json = {text: 'abcd', number : 1234, date:new Date()};
redis.zadd("test5",new Date().getTime(),JSON.stringify(json) );  //test5에 넣는다.
//두번째로 넣은 getTime 값이 시간을 밀리세컨드로 표기한 값이다.

var first_query = new Date("2019-07-19 13:00:00").getTime();
var second_query = new Date("2019-07-19 15:46:00").getTime();

redis.zrangebyscore("test5",first_query,second_query,'limit',0,200000,(res,list)=>{
        if(list){
            console.log(list.length);
        }
});
//조회를 시간별로 할 수 있다. 첫번째와 두번째 인자가 시간을 밀리세컨드로 변환한 값 이다.
//limit 상수를 통해서 페이지를 줄 수 있다.

redis.quit();

데이터를 넣을 때 시간을 밀리세컨드로 넣어 조회가 간편하다. 시간별로 조건을 나름 줄 수 있는 기능이다.

 

4. xadd, xrange 방법이다. 최근에 나온 기능이다. 최근에 나온기능이라 그런지 따로 함수는 없었으며 sendCommand라는 함수를 활용해서 명령어를 직접 입력하는 방식으로 연동 하였다.

const REDIS = require('redis');
var redis = REDIS.createClient(6379, '127.0.0.1');

var json = {text: 'abcd', number : 1234, date:new Date()};
var arg = JSON.stringify(json);
redis.sendCommand('xadd',['test6', 1234, 5678, arg]);  //test6에 배열형태로 저장

redis.xrange('test6', 1234, 5678, 'COUNT', 5).then(function(resp) {
  console.log(resp);   //test6에서 1234부터5678까지, count를 하되 5개만
});

redis.quit();

zrangebyscore랑 비슷한 기능인데..카운트 하는 모습을 나타내 보았다.  위의 명령어와 차이는 그다지 나지 않는다.

+ 최근 작성한 글