Redis란?

Redis란?

  • Remote Dictionary Server
  • 모든 데이터를 메모리에 저장하고 조회
  • 다양한 자료구조를 지원
  • 싱글 Thread로 동작하는 서버로 Atomic하게 동작

Getting Started

Install Redis in CentOS 7

  • https://linuxize.com/post/how-to-install-and-configure-redis-on-centos-7

}

Install Redis in Docker

docker pull redis
docker run --name myredis -d -p 6379:6379 redis
Redis 동작하는지 확인하기
  • brew install redis-cli 설치하기
redis-cli ping
PONG

Redis 접근하기

  • redis-cli를 치면 로컬호스트로 접근한다.

간단한 String 저장해보기

❯ redis-cli
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"

Redis Collections

  • String
    • Key를 어떻게 할 것인가?
    • Key에 따라서 분산이 결정되기 때문에 상황에 고려해서 설계하기
# single
SET <KEY> <VALUE>
GET <KEY>

# multi
MSET <KEY1> <VALUE1> <KEY2> <VALUE2>
MGET <KEY1> <KEY2>
# PUSH
LPUSH <KEY> <A> # (A)
RPUSH <KEY> <B> # (A, B)
LPUSH <KEY> <C> # (C, A, B)
RPUSH <KEY> <D, A> # (C, A, B, D, A)

# POP
LPOP <KEY> # C, (A, B, D, A)
RPOP <KEY> # A, (A, B, D)
RPOP <KEY> # D, (A, B)

# 컬렉션중에 최근에 쓰여진 데이터를 조회, 없다면
# > 데이터를 Push하기 전까지 대기, Timeout 존재
BLPOP
BRPOP
  • Set Commends
    • 데이터가 있는지 없는지 체크하는 용도
# ADD
SADD <KEY> <VALUE>

# 모든 Value를 돌려줌
SMEMBERS <KEY>

# Value가 존재하면 1, 없으면 0
SISMEMBER <KEY> <VALUE>
# Value가 이미 Key에 있으면 해당 Score로 변경된다.
ZADD <KEY> <SCORE> <VALUE>

# Score 범위에 포함되는 값들을 모두 돌려줌
# ZRANGE key 0 -1 > 모든 범위 값 가져온다.
# score는 정수형이 아님, 실수형이기 때문에 값이 정확하지 않을 수 있다
ZRANGE <KEY> <START_INDEX> <END_INDEX>

# Score 기준으로 역으로 정렬하여 반환
ZREVRANGE
# 5 < score < 10
ZRANGEBYSCORE zset (5 (10
# 5 < score <= 10
ZRANGEBYSCORE zset (5 10
# 무한대 표현
ZRANGEBYSCORE myzset -inf +inf
# single
HSET <KEY> <SUBKEY> <VALUE>
HGET <KEY> <SUBKEY>

# multi
HMSET <KEY> <SUBKEY1> <VALUE1> <SUBKEY2> <VALUE2>
HMGET <KEY> <SUBKEY1> <SUBKEY2>

HGETALL <KEY>

주의사항은 없을까?

  • 하나의 컬렉션에 너무 많은 아이템을 저장하지 않는게 좋다.
    • 10000개 이하가 권장
  • Expire는 Collection의 Item 개별로 걸리지 않고, 전체 Collection에 대해서만 걸림

Reference

0%