Redis

  • Remote Dictionary Server
  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  ์กฐํšŒ
  • ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ง€์›
  • ์‹ฑ๊ธ€ Thread๋กœ ๋™์ž‘ํ•˜๋Š” ์„œ๋ฒ„๋กœ Atomicํ•˜๊ฒŒ ๋™์ž‘

Getting Started

Install Redis in 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