Node.js에서 Redis 사용하기
모듈 설치
$ npm install redis
API 레퍼런스
https://github.com/mranney/node_redis
프로그래밍
모듈 가져오기
var redis = require("redis");
서버에 접속하기
var client = redis.createClient(6379, "reshout.com");
Redis 명령어 실행하기
모든 Redis 명령어는 client
객체의 함수를 통해 실행할 수 있다. 모든 함수는 args
배열에 이어 callback
을 전달 받는다.
두가지 형태로 호출할 수 있다.
client.mset(["test keys 1", "test val 1", "test keys 2", "test val 2"], function (err, res) {});
다른 형태는 다음과 같다.
client.mset("test keys 1", "test val 1", "test keys 2", "test val 2", function (err, res) {});
callback
은 생략 가능하다.
client.set("some key", "some val");
client.set(["some other key", "some val"]);
기본으로 제공되는 redis.print
를callback
으로 사용하여 간단히 결과를 출력할 수 있다.
명령어에 해당하는 함수명은 대소문자 모두 사용 가능하다. client.get()
함수와 client.GET()
함수는 동일하다.
client.get("missingkey", function(err, reply) {
// reply is null when the key is missing
console.log(reply);
});
존재하지 않는 key에 대한 get()
함수의 결과로 null
이 전달된다.
reply
의 타입은 커맨드의 결과에 따라 아래와 같다.
- single line: JavaScript String
- integer: JavaScript Number
- bulk: node Buffer
- multi bulk: array of node Buffer
이벤트
client
객체는 상황에 따라 다음과 같은 이벤트를 발생(emit) 시킨다.
- ready
- connect
- error
- end
- drain
- idle
error
이벤트에 대한 리스너를 등록하지 않으면 에러가 발생했을때 프로그램이 종료된다.
예제
client.on("error", function (err) {
console.log("Error " + err);
});
인증
Redis 서버가 인증을 요구하는 경우, client.auth(password, callback)
함수를 호출해 인증을 수행할 수 있다.
접속 종료
close()
함수를 호출해 강제로 접속을 종료할 수 있다. 명령어 실행에 따른 결과가 전달되기까지 기다리지 않고 즉시 접속을 종료하기 때문에 아래 코드는 아무것도 출력하지 않는다.
var redis = require("redis"),
client = redis.createClient();
client.set("foo_rand000000000000", "some fantastic value");
client.get("foo_rand000000000000", function (err, reply) {
console.log(reply.toString());
});
client.end();