redis용 npm 모듈을 설치한다.
npm install redis
레디스 서버와 연결한다.
var redis = require('redis');
var client = redis.createClient("6379", "192.192.0.0");
client.on('connect', function() {
//console.log('connected');
});
redis.createClient("6379", "192.192.0.0")
레디스 포트는 설정을 바꾸지 않는한, "6379"번을 사용한다.
redis.createClient("포트", "레디스서버 IP")
이다.
점수를 추가한다
var board = "leaderboard";
var score = 13;
var id = "blaknwhite";
client.zadd(board, score, id, function(err, reply){
if(err){
console.log("error");
return;
}else{
console.log("ranking : " + reply);
}
});
client.zadd(board, score, id, function(err, reply)
board는 키값이다. 이 키값으로 랭킹그룹을 구분한다.
예를 들어 12번 스테이지의 랭킹그룹과 13번 스테이지의 랭킹그룹을 가지고 싶다면 키값을
"stage12"와 "stage13"으로 설정하여 그룹을 나눌 수 있다.
score는 점수를 넣는다.
id에는 유저id를 넣는다.
function(err, reply)는 콜백 함수로서, 에러가 발생하면 err에 값이 있게 되고, 정상적일때는 reply에 rank값이 들어있다.
이때의 rank는 작은값을 0으로 sort 했을때(오름차순)의 값이다.
예를 들어 id(score) 가
black1(10) ---- 0
black2(22) ---- 1
black3(34) ---- 2
라면 black1의 rank는 0,black3는 2 가 된다.
만약 내림차순으로 얻으려면( black3의 랭킹이 0)
client.zrevrank( board, save_data_id, function(err, reply){
});
을 사용한다.
두개의 command를 동시에 실행한다
만약 점수를 추가하면서 zrevrank의 값을 얻어 오려면, 두개의 command를 동시에 실행하는
multi를 사용하면 된다.
var multis = client.multi();
multis.zadd( board, score, id);
multis.zrevrank( board, id);
multis.exec(function(err, re){
if(err){
console.log("error");
return;
}else{
console.log("ranking : " + re[1]);
}
});
콜백함수의 re에는 값이 배열 형식으로 들어가 있다
re[0] -> zadd의 return값
re[1] -> zrevrank의 return값
랭킹리스트를 가져온다
내림차순으로 0등부터 2등까지를 점수와 함께 가져오고 싶다면
var board = "leaderboard";
var start= 0;
var end = 2;
client.ZREVRANGE(board, start, end, 'WITHSCORES', function(err, reply){
if(err){
console.log("error");
return;
}else{
var count = reply.length;
var j =0;
for(var i=0; i < count; i+=2 ){
console.log("ID : " + reply[i]);
console.log("Score : " + reply[i+1]);
}
}
});
예를 들어 id(score) 가
black1(34) ---- 0
black2(22) ---- 1
black3(17) ---- 2
black4(11) ---- 3
일때
client.ZREVRANGE(board, start, end, function(err, reply) 라면
reply[0] -> black1
reply[1] -> black2
reply[2] -> black3
이 된다.
점수도 같이 표시되는
client.ZREVRANGE(board, start, end, 'WITHSCORES', function(err, reply) 라면
reply[0] -> black1
reply[1] -> 34
reply[2] -> black2
reply[3] -> 22
reply[4] -> black3
reply[1] -> 17
이 된다.