[Redis] 간단한 사용 예제 updated_at: 2024-12-15 04:02

간단한 사용 예제

nodeJs 및 php에서의 각각의 사용법 및 자료구조에 따른 예제에 대해 설명드립니다.

NodeJs에서 Redis 사용법

기본 설정

var redis = require("redis");//redis 정의
var rClient = redis.createClient();"

SET / GET

SET

String Type의 데이타를 저장

rClient.set('myKey', JSON.stringify(req), (err, resp) => {
});

GET

String Type의 데이타를 가져옮

rClient.get('myKey', (err, resp) {
});

HASHES Types

특정 Hash키에 속하는 Sub Key 형식으로 데이타를 저장하거나 가져올 수 있다.
일종의 그룹으로서 사용가능하다.

HSET

rClient.hset(key, field1, value1, (err, resp) => {
});
rClient.hset(key, field2, value2, (err, resp) => {
});

HGET

rClient.hget(key, field1, (err, resp) => {
  // value1
});
rClient.hget(key, field2, (err, resp) => {
  // value2
});

HMSET

HSET 과 유사하나 여러개의 field와 value를 저장할 수 있다.

rClient.hmset(key, field1, value1, field2, value2,... (err, resp) => {
});

HMGET

HGET 과 유사하나 여러개의 field와 value를 가져올 수 있다.

rClient.hmget(key, field1, field2,... (err, resp) => {
});

HEXISTS;

rClient.hexists(key, field1, (err, resp) => { // 존재하면 1, 존재하지 않으면 0
});
rClient.hdel($key, socket.id);
rClient.hgetall(key, (err, resp) => {
  for (key in data) {
    let obj = JSON.parse(resp[key]);
  }
});

sadd and smembers

중복된 값 없이 데이타를 처리할때 유용

sadd products "Product One"
sadd products "Product Two"
sadd products "Product One"

smembers products

srem product "Product Two"

List Type

데이타 저장하기

lpush

키에 저장된 목록의 처음(left)에 넣습니다.

rClient.lpush([key, JSON.stringify(req)], (err, resp) => {
  console.log(history);
});

rpush

키에 저장된 목록의 끝(right)에 넣습니다.

rClient.rpush([key, JSON.stringify(req)], (err, resp) => {
});

데이타 가져오기

list 형식으로 지정된 키의 값을 가져옮

lrange

좌측으로 부터 데이타를 가져온다.

rClient.lrange(key, 0, -1, (err, resp) => {
});

lindex

좌측으로 부터 특정 인덱스에 있는 값을 가져온다.

rClient.lindex(key, 0,  (err, resp) => {
});

기타

ltrim

기존 리스트의 데이타를 특정 갯수만 다시 저장(데이타가 너무 많은 경우 데이타 삭제)
List Type 에서 데이타를 삭제하는 기능으로 사용하면 유용하다.

rClient.ltrim(key, 0, 49, (err, resp) => {

});//50개만 저장

lset

List Type 에서 데이타를 업데이트하는 기능으로 사용하면 유용하다.

rClient.lset(key, i,  JSON.stringify(obj)); 현재 데이타 업데이트

lrem

List Type 에서 데이타를 삭제하는 기능으로 사용하면 유용하다.
count 는 몇개를 삭제하며 어디서 부터 삭제할 것인지를 의미한다.

LREM key count element
LREM key 2 element //  위에서 아래로 일치하는 2개를 삭제
LREM key -2 element // 아래에서 위로 일치하는 2개를 삭제
client.lrem(key, 1, JSON.stringify(obj));     //키 list에 obj가 있다면 하나만 지웁니다

기타 자주사용하는 명령

exists

키가 존재하는지 확인

rClient.exists(key, (err, resp) =>{ 
  // resp : 0 | 1
});

삭제

rClient.del(key, (err, resp) => {
});

php 에서의 사용 예제

$redis->lrem($key, $v, 0); <!-- php에서는  Redis 의 종류에 따라 사용법은 node에서의 사용법과 순서가 다르다.
Redis::lrem($key, 0, $val); 
$redis->lrem($key, stripcslashes($v), 0); 

데이타 출력

$this->redis->lrange($key, 0, -1); 전체데이타 가져오기
$this->redis->lrange($key, 0, 0); 하나의 데이타 가져오기 [배열 타입] , 걍 하나를 가져오기 위해서는 lindex를 사용한다.
Redis::lindex($key, 0)인덱스를 이용하여 데이타 가져오기
$this->redis->lpush($key, trim($v)); ""
$this->redis->lpush($key, 0, 500); 
$this->redis->lset($key, index, value)데이타 업데이트, index 0 : 맨처음, -1:맨끝
$this->redis->ltrim($key, 0, 500);//500개만 저장
$item = Redis::lindex($key, 0);특정위치의 데이타 가져오기

LLEN mylist

(integer) 2 사이즈 가져오기(count)

hash

해시는 고유키값의 리스트라고 보면 된다. 회원정보 같은 것을 담을 때 유용하다.

rClient.hset($key, socket.id, JSON.stringify(req)); // 생성된 소켓별 사용자 정보 입력
$redis->hset($key, $objRoom->creater->mb_id, ");
$redis->hdel($key, $this->member["mb_id"]);



$range = $this->redis->hKeys($key);
  if(is_array($range)) foreach($range as $k){
                       
    $obj = json_decode($this->redis->hGet($key, $k));
    $connector[$obj->mb_id] = $obj;
  }

$range = $this->redis->hGetAll("socket.info");

set/get

$redis->set($key, '42');
$redis->rename($key, 'y');
$redis->get($key);   // → 42
$redis->delete($key1, $key2); /* return 2 */"

sadd and smembers

중복된 값 없이 데이타를 처리할때 유용

$this->redis->sadd($key, $value);
$this->redis->smembers($key);
$this->redis->srem($key, $value);

삭제

$redis->lrem($key, $v, 0); 

유효기간설정

$this->redis->expire($key, $expire);
$expire : 초단위 설정

keys

https://redis.io/commands/keys

$keys = Redis::keys($key.'*');
keys *
keys abc*
평점을 남겨주세요
평점 : 5.0
총 투표수 : 1

질문 및 답글