레디스에는 다양한 저장방법이 존재한다.
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랑 비슷한 기능인데..카운트 하는 모습을 나타내 보았다. 위의 명령어와 차이는 그다지 나지 않는다.
반응형
'Node.js' 카테고리의 다른 글
Nodejs http client, NodeJs Http 클라이언트, 노드JS Http 요청 (0) | 2019.11.12 |
---|---|
Nodejs tunnel-ssh(Nodejs 터널링, 노드js 터널링) unhandledpromiserejectionwarning connect ECONNREFUSED (0) | 2019.10.17 |
NodeJs Redis 연동(NodeJs 레디스연동, zrangebyscore) (0) | 2019.08.16 |
NodeJs 오라클 연동 (NodeJs Oracle, Node.js Oracle, Oracle 연동) (16) | 2019.08.14 |
NodeJs Mysql 연동(Nodejs Maria 연동, 노드js 마리아, 노드js mysql) (0) | 2019.08.14 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글