redis cli
Redis 6.2+redis-cli ๋น ๋ฅธ ์ฐธ์กฐ: ์ฐ๊ฒฐ & info, key/string ๋ช ๋ น, hashes, lists, sets, sorted sets, streams, pub/sub, ์๋ฒ ๊ด๋ฆฌ, ์์์ฑ & ๋ณต์ , ์ง๋จ โ ์์ฃผ ์ฐ๋ ์ต์ ๊ณผ ์ค์ ์์๊น์ง ์ ๋ฆฌํ์ต๋๋ค.
๋ช ๋ น์ด 42๊ฐ
์ฐ๊ฒฐ & Info
redis-cli -h <host> -p <port> -a <pwd>Redis ์๋ฒ์ ์ฐ๊ฒฐํด ์ธํฐ๋ํฐ๋ธ REPL ์ ์ฝ๋๋ค.
-h host; -p 6379; -a password; --user user; --pass password; --tls; --insecure; -n dbnum
redis-cli -h redis.internal -p 6379 --user monitoring --pass ***redis-cli AUTH <password>ํ์ฌ ์ฐ๊ฒฐ์์ ์ธ์ฆํฉ๋๋ค(REPL ์ ์ฐ ํ).
--user <user> && AUTH password; ACL ์คํ์ผ
redis-cli AUTH my_secret_passwordredis-cli PINGPING ์ ๋ณด๋ด๋ฉด PONG ์๋ต โ ๊ธฐ๋ณธ์ ์ธ ์ฐ๊ฒฐ / ํฌ์ค ์ฒดํฌ.
๋ชจ๋ ์ฐ๊ฒฐ ์ต์ (-h / -p / --pass ๋ฑ); -r ๋ฐ๋ณต; -i ๊ฐ๊ฒฉ
redis-cli -h redis -p 6379 -i 5 PINGredis-cli INFO [section]์๋ฒ ํต๊ณ๋ฅผ ํ์ํฉ๋๋ค(server / clients / memory / replication / keyspace / stats / โฆ).
INFO [server|clients|memory|stats|replication|keyspace|cluster|commandstats]; --stat ๊ฐ๋จํ ์ค์๊ฐ ์นด์ดํฐ
redis-cli -h redis INFO memory | head && redis-cli --stat -i 5 -h redisredis-cli CLIENT LISTํ์ฌ ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ ๋ชฉ๋ก(id, addr, fd, name, โฆ).
CLIENT LIST; CLIENT GETNAME; CLIENT SETNAME
redis-cli CLIENT LIST | awk '{print $1, $2}' | headredis-cli CLIENT KILL <id|addr>ํด๋ผ์ด์ธํธ๋ฅผ ๋์ต๋๋ค(id, addr host:port, TYPE / ADDR / USER / LADDR ํํฐ).
KILL ADDR ip:port; KILL TYPE normal|master|replica|pubsub; KILL USER username
redis-cli CLIENT KILL ADDR 10.0.1.42:54321 && redis-cli CLIENT LIST | wc -lKey & String
GET / SET / SETEX / SETNX๋ฌธ์์ด ๊ฐ์ ์ฝ๊ธฐ/์ฐ๊ธฐ; SETEX ๋ TTL ์ ์ถ๊ฐ, SETNX ๋ ํค๊ฐ ์์ ๋๋ง ๊ธฐ๋ก.
SET key val EX N (TTL ์ด) | PX N (ms) | NX/XX; GETEX (Redis 6.2)
redis-cli SET session:42 '{"user":42}' EX 3600 NX && redis-cli GET session:42MSET / MGET / MSETNX๋ค์ค ํค ๋ฌธ์์ด ์ฐ์ฐ; MSETNX ๋ ํค๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ๊ฑฐ๋ถํฉ๋๋ค.
redis-cli MSET cache:hit:1 ok cache:hit:2 ok && redis-cli MGET cache:hit:1 cache:hit:2 cache:miss:1INCR / INCRBY / INCRBYFLOAT์์์ ์นด์ดํฐ ์ฐ์ฐ โ rate limiter & counter ์ ์ ํฉ.
redis-cli INCR ratelimit:user:42
redis-cli INCRBY hitcounter:2026-07-23 5
redis-cli INCRBYFLOAT metric:load 0.05APPEND / STRLEN / DEL / EXISTSํํ ์ฐ๋ ๋ฌธ์์ด ํค ๊ด๋ฆฌ: ํ ์คํธ ์ถ๊ฐ, ๊ธธ์ด, ๋จ์ผ/๋ค์ค ์ญ์ .
DEL key [key ...]; EXISTS k1 k2 (์กด์ฌ ๊ฐ์); TYPE key
redis-cli APPEND log:42 'request\n' && redis-cli STRLEN log:42Key & TTL
EXPIRE / PEXPIRE / TTL / PTTL / PERSIST / EXPIREATTTL ์ค์ /์กฐํ(์ด/๋ฐ๋ฆฌ์ด/์ ๋ Unix ์๊ฐ); PERSIST ๋ TTL ์ ํด์ ํฉ๋๋ค.
EXPIRE key seconds; PEXPIRE key ms; EXPIREAT key unix_seconds; NX/XX/GT/LT
redis-cli EXPIRE session:42 300 && redis-cli TTL session:42KEYS pattern / SCANKEYS ๋ O(N) ์ด๋ผ ํฐ DB ์์ ์ํ โ ์ปค์ ๊ธฐ๋ฐ SCAN ์ ๊ถ์ฅ.
SCAN cursor MATCH pattern COUNT N TYPE type; --no-warnings
redis-cli --scan --pattern 'cache:hit:*' | head -20OBJECT ENCODING|HELP|FREQ|IDLETIME|REFCOUNT <key>๋ด๋ถ ์ธ์ฝ๋ฉ, ๋ฉ๋ชจ๋ฆฌ, ๋ง์ง๋ง ์ ๊ทผ ์๊ฐ ์กฐํ(๋๋ฒ๊ทธ & RDS ๋จ๊ณ ํ๋).
redis-cli OBJECT ENCODING big:set && redis-cli OBJECT IDLETIME big:setHash
HSET / HGET / HMSET / HMGET / HGETALL์์ ๊ฐ์ฒด๋ฅผ ํด์๋ก ์ ์ฅ โ ํ๋กํ, ์ค์ , ์ธ์ ์ ์ ์ด์ธ๋ฆฝ๋๋ค.
HSET key f1 v1 f2 v2; HMGET key f1 f2; HSETNX f v ์์ผ๋ฉด๋ง set
redis-cli HMSET user:42 name Alice email [email protected] && redis-cli HGETALL user:42HKEYS / HVALS / HLEN / HEXISTS / HDELํด์๋ฅผ ํ์/๊ฐ์ง์น๊ธฐ: ํค/๊ฐ ๋ชฉ๋ก, ๊ธธ์ด, ์กด์ฌ ์ฌ๋ถ, ์ญ์ .
redis-cli HKEYS user:42 && redis-cli HLEN user:42 && redis-cli HEXISTS user:42 adminHINCRBY / HINCRBYFLOATํด์ ํ๋์ ๋ํ ์์์ ์นด์ดํฐ โ ์ค์ฒฉ ์นด์ดํธ ๋ฉํธ๋ฆญ์ ์ต์ .
redis-cli HINCRBY orders:2026-07-23 paid_count 1 && redis-cli HINCRBYFLOAT orders:2026-07-23 gmv 19.95List
LPUSH / RPUSH / LPOP / RPOP๋ฆฌ์คํธ๋ฅผ ํ(LPUSH/LPOP = FIFO) ๋๋ ์คํ(LPUSH/RPOP = ๋ฐฑ์คํ ํ)๋ก ์ฌ์ฉ.
redis-cli RPUSH jobs:queue job1 job2 job3 && redis-cli LPOP jobs:queueLRANGE / LLEN / LINDEX / LSET / LREM๋ฆฌ์คํธ์ ๋ฒ์๋ฅผ ์ฝ๊ธฐ/๊ด๋ฆฌ; LSET ์ ์ธ๋ฑ์ค ํ์; LREM count>0 ์, <0 ๋ค์์.
LRANGE key 0 -1 ์ ์ฒด; LINDEX 0 ๋จธ๋ฆฌ; LREM 0 value ์ ์ฒด; LTRIM start stop ๋ฒ์ ์ ์ง
redis-cli LRANGE jobs:queue 0 -1 && redis-cli LTRIM logs:2026-07-23 -1000 -1BLPOP / BRPOP / BRPOPLPUSH๋ธ๋กํน ๋ณํ โ ๋น์ด ์์ผ๋ฉด N ์ด ๋๊ธฐ ํ pop; ์์ ํ ํ ์์ปค.
BLPOP key timeout (์ด, 0 = ๋ฌดํ); Redis 6.2+ ์ COUNT ์ต์
redis-cli BLPOP jobs:queue 0RPOPLPUSH src dst / LMOVE src dst LEFT|RIGHT (6.2+)ํ์ชฝ์์ pop ํ๊ณ ๋ค๋ฅธ ์ชฝ์ผ๋ก push โ ์์ ํ ํ ์ฒ๋ฆฌ.
redis-cli LMOVE jobs:queue jobs:processing RIGHT LEFTSet
SADD / SMEMBERS / SCARD / SISMEMBER์ ์ฐ์ฐ: ๋ฉค๋ฒ์ญ, ํฌ๊ธฐ, ์ผ๊ด ํ์ธ(0/1 ๋ฐํ).
SADD k m1 m2 ...; SCARD k; SISMEMBER k m
redis-cli SADD tags:42 redis postgres mongo && redis-cli SCARD tags:42SREM / SPOP / SRANDMEMBER์ญ์ , ๋๋ค pop(์ญ์ ) ๋๋ ๋๋ค ์ ํ(๋ณด์กด) โ ์ํ๋ง/์ถ์ฒจ์ ์ ์ฉ.
redis-cli SRANDMEMBER lottery:tickets 3 && redis-cli SPOP lottery:tickets 1SINTER / SUNION / SDIFF / SDIFFSTORE์ ๋์ โ ๊ต์งํฉ, ํฉ์งํฉ, ์ฐจ์งํฉ; *_STORE ๋ ํค์ ์ ์ฅ.
redis-cli SINTER tags:a tags:b tags:c && redis-cli SDIFFSTORE missing:set tags:all tags:42Sorted Set (Zset)
ZADD / ZSCORE / ZRANGE / ZCARD๋ฉค๋ฒ๋ฅผ score ์ ํจ๊ป ์ ์ฅ; ZRANGE ๋ score(WITHSCORES) ๋๋ lex ์์.
ZADD k score m [score m ...]; ZRANGEBYSCORE -inf +inf; ZREVRANGE
redis-cli ZADD lb:game alice 1500 bob 1300 carol 1750 && redis-cli ZRANGE lb:game 0 -1 REV WITHSCORESZRANGEBYSCORE / ZRANK / ZINCRBY / ZREMzset ์ ๋ฒ์/์์/์นด์ดํฐ โ top-N, ํํ ์ฌ๋ผ์ด๋, ๋ฆฌ๋๋ณด๋.
ZRANGEBYSCORE min max LIMIT offset count; ZREVRANK; ZREM k m [m...]
redis-cli ZADD ratelimit:api 1750731000.123 10.0.1.42 1750731050.456 10.0.1.7 && redis-cli ZREMRANGEBYSCORE ratelimit:api 0 $(date +%s.%N --date='-5 minutes')Pub/Sub & Streams
SUBSCRIBE / PSUBSCRIBE / PUBLISH / UNSUBSCRIBE์์ด์ด ์ ์ค์๊ฐ pub/sub โ ๊ฐ๋ฒผ์ด ๋ธ๋ก๋์บ์คํธ, ์์์ฑ ์์.
PSUBSCRIBE news:*; PUBLISH channel msg; PUB/SUB NUMSUB ์กฐํ
redis-cli PSUBSCRIBE 'app.*' & PID=$!; redis-cli PUBLISH app.notice 'red-button pressed'; sleep 0.1; kill $PIDXADD / XLEN / XRANGE / XREADStream = ์ปจ์๋จธ ๊ทธ๋ฃน์ด ์๋ append-only ๋ก๊ทธ(Redis 5+).
XADD k * f v; XADD k MAXLEN ~ 1000 * f v (capped); XREAD / XREADGROUP; ์ปจ์๋จธ ์ด๋ฆ; XAUTOCLAIM
redis-cli XADD events * user 42 action click && redis-cli XLEN events && redis-cli XRANGE events - +XREAD BLOCK 0 STREAMS k $์ ์ํธ๋ฆฌ๋ฅผ ์์ํ ๋๊ธฐ โ ์์ปค ํ์ฉ ์ปจ์๋จธ ๊ทธ๋ฃน๊ณผ ์ง์ ์ด๋ฃน๋๋ค.
redis-cli XGROUP CREATE events grp1 0 MKSTREAM && redis-cli XREADGROUP GROUP grp1 c1 BLOCK 0 COUNT 10 STREAMS events '>'์๋ฒ ๊ด๋ฆฌ
FLUSHDB / FLUSHALL [ASYNC]ํ์ฌ(FLUSHDB) ๋๋ ๋ชจ๋ (FLUSHALL) ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋น์๋๋ค. โ ๏ธ ํ๊ดด์ .
FLUSHALL ASYNC; FLUSHDB ASYNC; --no-auth-warning
redis-cli -h dev FLUSHDBDBSIZE / CONFIG GET|SET <key>ํค ๊ฐ์ ์กฐํ์ ๋ฐํ์ ์ค์ (memory limit, appendonly ๋ฑ) ๊ด๋ฆฌ.
CONFIG GET dir/save/maxmemory; CONFIG SET maxmemory 1gb; CONFIG REWRITE ์์ํ
redis-cli CONFIG SET maxmemory-policy allkeys-lru && redis-cli CONFIG REWRITESLOWLOG GET|len|resetslowlog-log-slower-than(๋ง์ดํฌ๋ก์ด)์ ๋๊ธด ๋ช ๋ น์ ์กฐํํฉ๋๋ค.
SLOWLOG GET 10; SLOWLOG LEN; SLOWLOG RESET
redis-cli SLOWLOG GET 10 | jq '.[].command'MONITOR๋ชจ๋ ํด๋ผ์ด์ธํธ๊ฐ ์คํํ ๋ชจ๋ ๋ช ๋ น์ ์คํธ๋ฆผ โ ๋๋ฒ๊ทธ ์ ์ฉ, ๋น์ฉ์ด ๋งค์ฐ ํฝ๋๋ค.
์ถ๊ฐ ํ๋๊ทธ ์์; --bigkeys (redis-cli --bigkeys ์ ํจ๊ป ์ต๊ณ ); --memkeys; --latency; --intrinsic-latency
timeout 2 redis-cli MONITOR | grep -E 'EXPIRE|GET.*:42'DEBUG ... / MEMORY USAGE <key>๋ด๋ถ ์กฐํ: OBJECT ์ธ์ฝ๋ฉ, ํค๋น ๋ฉ๋ชจ๋ฆฌ(๋๋ฒ๊ทธ ์ ์ฉ ํ๋๊ทธ).
MEMORY USAGE key [SAMPLES N]; DEBUG OBJECT-DURATION ๋๋ DEBUG RELOAD-ALL-COMMANDS (๋๋ฌพ)
redis-cli MEMORY USAGE user:42 SAMPLES 5 && redis-cli MEMORY DOCTORACL WHOAMI / ACL CAT / ACL GETUSERACL ๋๋ฒ๊น (Redis 6+).
redis-cli ACL WHOAMI && redis-cli ACL GETUSER deployer | head -20์์์ฑ
BGSAVE / SAVE / LASTSAVERDB ์ค๋ ์ท ํธ๋ฆฌ๊ฑฐ(BGSAVE = fork+async); LASTSAVE ๋ ๋ง์ง๋ง ์ค๋ ์ท ์๊ฐ.
redis-cli BGSAVE && redis-cli LASTSAVEBGREWRITEAOF๋ฐฑ๊ทธ๋ผ์ด๋์์ AOF ํ์ผ์ ์ฌ์์ฑ(์ปดํฉ์ ).
์ฌ์์ฑ๋ ์ ๊น ๋ธ๋ก; auto-aof-rewrite-percentage ๊ฐ ์๊ณ์น๋ฉด ์๋ ์คํ
redis-cli BGREWRITEAOF && redis-cli INFO persistence | headREPLICAOF host port (was SLAVEOF)์ด ์ธ์คํด์ค๋ฅผ ๋ค๋ฅธ ์ธ์คํด์ค์ replica ๋ก ๋ง๋ญ๋๋ค(๋๋ REPLICAOF NO ONE ์ผ๋ก ์น๊ฒฉ).
redis-cli REPLICAOF redis-master 6379 && redis-cli REPLICAOF NO ONEํ์ดํ๋ผ์ธ & ์ค์บ
redis-cli ... < commands.txtํ์ดํ๋ผ์ด๋: stdin ์ผ๋ก๋ถํฐ ๋ช ๋ น์ ํ ๋ผ์ด๋ํธ๋ฆฝ์ ๋ฌถ์ด ๋ณด๋ด ๋ฐฐ์น์์ ํจ์ฌ ๋น ๋ฆ ๋๋ค.
--pipe ๋ชจ๋๋ RESP ์ฌ์ฉ; < file.txt
printf 'SET k1 v1\nSET k2 v2\nGET k1\nGET k2\nINCR counter\n' | redis-cli --pipe | headredis-cli --scan --pattern '...'์๋ฒ ์ธก ์ปค์ ์ค์บ โ KEYS ์ฒ๋ผ O(N) ์ผ๋ก ํญ์ฆํ์ง ์์ต๋๋ค.
--scan --pattern p; --bigkeys / --memkeys / --hotkeys (์ํ๋ง)
redis-cli --scan --pattern 'session:*' | wc -l์ง๋จ
redis-cli --bigkeys / --memkeys๊ฐ์ฅ ํฐ ํค / ํค๋น ๋ฉ๋ชจ๋ฆฌ ์ฐพ๊ธฐ โ ์ํ ๊ธฐ๋ฐ์ด๋ผ ์๋ฒ๋ฅผ ๋ฉ์ถ์ง ์์ต๋๋ค.
redis-cli -h prod --bigkeys --i 0.01 | tee /tmp/bigkeys.logredis-cli --latency / --latency-history๋ช ์ํ์ ๋ํ ์ค์๊ฐ ์ง์ฐ ํ์คํ ๊ทธ๋จ(min / max / avg).
--latency; --latency-history -i 5; --intrinsic-latency N (OS ํด๋ญ ์ง๋จ)
redis-cli -h prod --latency-history -i 5 > /tmp/lat.log & sleep 30; kill %1redis-cli CLUSTER INFO / CLUSTER NODESํด๋ฌ์คํฐ ์ํ: ์ฌ๋กฏ, ๋ ธ๋ ์ญํ (master/replica), ์ํ.
redis-cli --cluster check 10.0.0.1:6379๊ด๋ จ ๋ช ๋ น์ด ์นํธ์ํธ
postgresql
PostgreSQL ๋น ๋ฅธ ์ฐธ์กฐ: psql ํด๋ผ์ด์ธํธ ๋ช ๋ น, DDL/DML ๋ฌธ, joins/aggregates, ์ธ๋ฑ์ค, ํธ๋์ญ์ , ๋ฐฑ์ /๋ณต์ โ ์์ฃผ ์ฐ๋ ์ต์ ๊ณผ ์ค์ ์์๊น์ง ์ ๋ฆฌํ์ต๋๋ค.
๋ช ๋ น์ด 36๊ฐ
PostgreSQL 14+
mysql
MySQL / MariaDB ๋น ๋ฅธ ์ฐธ์กฐ: ํด๋ผ์ด์ธํธ ๋ช ๋ น, DDL/DML ๋ฌธ, joins/aggregates, ์ธ๋ฑ์ค, ํธ๋์ญ์ , ๋ฐฑ์ /๋ณต์ โ ์์ฃผ ์ฐ๋ ์ต์ ๊ณผ ์ค์ ์์๊น์ง ์ ๋ฆฌํ์ต๋๋ค.
๋ช ๋ น์ด 38๊ฐ
MySQL 8.0+
mongodb
mongosh ๋น ๋ฅธ ์ฐธ์กฐ: ์ฐ๊ฒฐ, CRUD, ์ฟผ๋ฆฌ ์ฐ์ฐ์, aggregation ํ์ดํ๋ผ์ธ, ์ธ๋ฑ์ค, replica set, ์ฌ์ฉ์, dump/restore โ ๊ฐ์ฅ ํํ ์ ธ ํจํด๊ณผ ์ค์ ์์๊น์ง ์ ๋ฆฌํ์ต๋๋ค.
๋ช ๋ น์ด 30๊ฐ
MongoDB 6.0+ / mongosh 1.6+
์ํ ๋ฐ ์ฌ์ฉ ์๋ด
๋ณธ ๋ช ๋ น์ค ๋๊ตฌ ์นํธ์ํธ ๋ชจ์์ ์คํ ์ปค๋ฎค๋ํฐ ์ฐธ๊ณ ์๋ฃ์ ๋๋ค. ๋ณธ ๋ฌธ์์์ ์ธ๊ธ๋๋ ๋๊ตฌ์ ๋ช ์นญ, ๋ก๊ณ , ์ํ(์: Gitโข, Dockerโข, Kubernetesยฎ, kubectl, PostgreSQLยฎ, MySQLยฎ, Redisโข, MongoDBยฎ, Linuxโข, PowerShellโข, Vimโข ๋ฑ)๋ ๊ฐ ๊ถ๋ฆฌ์์ ์์ฐ์ด๋ฉฐ, ๋ณธ ๋ฌธ์์์๋ ์๋ณ ๋ฐ ์ฐธ๊ณ ๋ชฉ์ ใฎใฟใง ์ฌ์ฉ๋ฉ๋๋ค.
๋ณธ ์นํธ์ํธ์ ๋ชจ๋ ๋ด์ฉ์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋ ๋จ์ํ๋ ์์ฒด ์๊ฒฐํ ์ฐธ๊ณ ์๋ฃ์ด๋ฉฐ, ์ด๋ ํ ๊ณต์ ๋ฌธ์์๋ ๊ณ์ดยท์ธ์ ยท์ถ์ฒ ๊ด๊ณ๊ฐ ์์ต๋๋ค. ๋ช ๋ น ๋ชฉ๋ก, ํ๋๊ทธ ์ค๋ช , ์์ ๋ ๋ชจ๋ ์ ์์ ์๋ณธ ๋จ์ํ์ด๋ฉฐ, ๊ถ์ ์๋ ์ ๋ณด๊ฐ ํ์ํ ๊ฒฝ์ฐ ๊ฐ ๋๊ตฌ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค.
๋ช ๋ น ๊ตฌ๋ฌธ ๋ฐ ์ต์ ํ๋๊ทธ๋ ๋๊ตฌ ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ต๋๋ค. ํ์๋๋ ๋ฒ์ ํ๊ทธ๋ ์์ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐ์ํ๋ฉฐ, ๋ค๋ฅธ ๋ฒ์ ์์๋ ๋์์ด ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ณธ ์นํธ์ํธ๋ ์ํ๊ถ์์ ์ด๋ ํ ์ ํธ๋ ๊ถ์ฅ๋ ์๋ฏธํ์ง ์์ต๋๋ค.
์ํ๊ถ์ ๋๋ ์ ์๊ถ์๊ฐ ์ฌ์ดํธ์ ์ผ๋ถ ๋ด์ฉ์ ๋ํด ๊ถ๋ฆฌ ์นจํด๊ฐ ์๋ค๊ณ ํ๋จํ์๋ ๊ฒฝ์ฐ [email protected]์ผ๋ก ์ด๋ฉ์ผ์ ๋ณด๋ด ์ฃผ์ญ์์ค. ์ ํจํ ๊ถ๋ฆฌ ์ฆ๋ช ์ ๋ฐ์ ํ ํฉ๋ฆฌ์ ์ธ ๊ธฐ๊ฐ ๋ด์ ๊ด๋ จ ๋ด์ฉ์ ์์ ํ๊ฑฐ๋ ์ญ์ ํ๊ฒ ์ต๋๋ค.
๋ณธ ์ฌ์ดํธ๋ ์ฌ์ดํธ ์ ๋ณด์ ์ด์ฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ์ด๋ ํ ์ง์ ์ ๋๋ ๊ฐ์ ์ ์ํด์ ๋ํด์๋ ๋ฒ์ ์ฑ ์์ ์ง์ง ์์ต๋๋ค.
Redis ์๊ฐ
Redis๋ Salvatore Sanfilippo(antirez)๊ฐ 2009๋ ์ ๋ง๋ ์คํ ์์ค ์ธ๋ฉ๋ชจ๋ฆฌ ํค-๊ฐ ๋ฐ์ดํฐ ์ ์ฅ์๋ก, ํ์ฌ Linux Foundation์ด ๊ด๋ฆฌํ๋ฉฐ ์์ ๋ฒ์ ์ Redis 7+์ ๋๋ค. ์ ๋ฆด๋ฆฌ์ค๋ Redis Source Available License(BSD ์คํ์ผ)๋ก ์ ํ๋์๊ณ , ์ค๋๋ ๋ฆด๋ฆฌ์ค๋ MIT๋ฅผ ์ ์งํฉ๋๋ค. Redis๋ ์์ ๋ฐ์ดํฐ์ ์ RAM์ ๋๊ณ ์ค์ ๊ฐ๋ฅํ AOF(Append-Only File) ๋๋ RDB(์ค๋ ์ท)๋ก ์์ํํฉ๋๋ค โ ์ด๊ฒ์ด ์ฝ๊ธฐ ์ง์ฐ์ ๋ง์ดํฌ๋ก์ด ๋จ์๋ก ๋ง๋๋ ์ด์ ์ด๋ฉฐ ํ๋์จ์ด ์ฌ์ด์ง์ ๊ทผ๊ฑฐ์ด๊ธฐ๋ ํฉ๋๋ค. ๋จ์ ๋ฌธ์์ด ์ธ์๋ ํด์, ๋ฆฌ์คํธ, ์ธํธ, ์ ๋ ฌ ์ธํธ(`ZRANGEBYSCORE` ๋ฑ), ์คํธ๋ฆผ(์ด๋ฒคํธ ์์ฑ์ฉ), HyperLogLog(์นด๋๋๋ฆฌํฐ ์ถ์ ), ๋นํธ๋งต, ์ง๋ฆฌ ๊ณต๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋์ ๊ฐ์ ์์ง ์์ JSON, ๊ฒ์, ๋ฒกํฐ ์ ์ฌ๋, ์๊ณ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค. ์ธ์ ์บ์, ๋ฆฌ๋๋ณด๋, ๋ ์ดํธ ๋ฆฌ๋ฏธํฐ, ๋ถ์ฐ ์ ๊ธ(`SET NX PX`), Pub/Sub, ์คํธ๋ฆผ ๊ธฐ๋ฐ ํ, ๊ฒฝ๋ ๋ฉ์์ง ๋ธ๋ก์ปค โ ๋ชจ๋ Redis์ ์์ญ์ ๋๋ค. ๋์ผํ ํํ๋ก ์์์ ์ธ ํธ๋์ญ์ ์ ์ฅ์ด ํ์ํ๋ฉด PostgreSQL์ด๋ ๋ค๋ฅธ RDBMS๋ฅผ ์ ํํ์ธ์. Redis๋ ๊ธฐ๋ณธ์ ์ผ๋ก localhost ๋๋ ์ฌ์ค ๋คํธ์ํฌ์๋ง ๋ฐ์ธ๋ํฉ๋๋ค โ `requirepass` + `bind 127.0.0.1`(๋๋ ๋ฐฉํ๋ฒฝ)์ด ์ต์ ๋ฒ ์ด์ค๋ผ์ธ์ ๋๋ค.
์นํธ์ํธ ๋ฒ์ 1.0.0