Redis ๋ค๋ฅธ ํฌํธ๋ก ์ค์นํ๊ธฐ
2023.05.16 - [๐ ์ธํ๋ผ/๋ชจ๋ํฐ๋ง] - Prometheus + Grafana๋ก Redis ๋ชจ๋ํฐ๋ง ๊ตฌ์ถํ๊ธฐ ์์ ๊ณผ์ ๋ฅผ ์งํํ๋ฉด์ ํ ์ธ์คํด์ค์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฒ์ ์ Redis๋ฅผ ์ค์นํด์ฃผ์ด์ผ ํ์ต๋๋ค. Redis์ ๊ธฐ๋ณธ ํฌํธ๋ 6379์ด๊ธฐ ๋๋ฌธ์, ๋ Redis์ ํฌํธ๊ฐ ๊ฒน์น์ง ์๋๋ก ํฌํธ ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํด ์ค์น๋๋๋ก ์งํํด๋ณด๊ฒ ์ต๋๋ค! ์๋ ๊ณผ์ ๋๋ก ์งํํด์ค๋๋ค. # Redis ์์ค ์ฝ๋ ๋ค์ด๋ก๋ ๋ฐ ์์ถ ํด์ $ wget http://download.redis.io/releases/redis-x.x.x.tar.gz $ tar xzf redis-x.x.x.tar.gz $ cd redis-x.x.x # redis.conf ํ์ผ ์ด๊ณ ํฌํธ ๋ฒํธ ๋ณ๊ฒฝ $ vi redis.conf # port 6379 ->..
Redis warning ์์ด ๊น๋ํ๊ฒ ๋์ฐ๊ธฐ
2023.01.25 - [๐ ์ธํ๋ผ/NHN Cloud] - NHN Cloud ์ธ์คํด์ค์ Redis ์ค์นํ๊ธฐ (1) - ์์ถํ์ผ ์ด์ฉ 2023.02.08 - [๐ป ํ๋ก๊ทธ๋๋ฐ/Shell] - Redis ์ค์น ์๋ํ ์คํฌ๋ฆฝํธ (1) - binary ๋ฐฉ์ ์์ ํฌ์คํ ์ ์ด์ฉํด์ Redis๋ฅผ ์ค์นํ์ ๋ ์ด๊ธฐ ์คํ ํ๋ฉด์ ๋๋ค. ํ์ง๋ง ๋ญ๊ฐ ๊น๋ํ์ง ์๊ณ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์์ง๋ค์ด ๋ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf WARNING: The TCP backlog setting of 51..
[Redis] ์์ธํ ์์๋ณด๊ธฐ! (8) - ACL
ACL Access Control List์ ์ค์๋ง๋ก redis 6๋ถํฐ ๋์ ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ค๋ฅธ RDBMS(MySQL, Oracle ๋ฑ)์๋ ์ ์ ๋ณ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ๋ฒ์๋ฅผ ์ ํ ์ ์์ง๋ง redis์๋ ์ ์ ๋ผ๋ ๊ฐ๋ ์ด ์์์ต๋๋ค. ACL์ ์ ์ ๋ฅผ ์ค์ ํ๊ณ ์คํ ๊ฐ๋ฅํ ์ปค๋งจ๋์ ์ ๊ทผํ ์ ์๋ ํค ์ธก๋ฉด์์ ํน์ ์ฐ๊ฒฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋๋ค. # 1 ACL SETUSER alice on >p1pp0 ~cached:* +get # 2 AUTH alice p1pp0 #1 : alice ๋ผ๋ user๋ฅผ ์์ฑํ๋ค. ์ด๋ฆ ํจ์ค์๋ : p1pp0 ์ ๊ทผ ๊ฐ๋ฅํ ํค ํจํด : cached ๋ก ์์ํ๋ key๋ค์ ์ ๊ทผํ ์ ์๋ค. (allkeys : ๋ชจ๋ ํค์ ์ ๊ทผ ๊ฐ๋ฅ) ์คํ ๊ฐ๋ฅํ ์ปค๋งจ๋ : ์ ๊ทผํ ๋๋ get ๋ง ์ฌ์ฉํ ์ ..
[Redis] ์์ธํ ์์๋ณด๊ธฐ! (7) - Pub/Sub
Pub/Sub - ๋ฉ์์ง ๋ธ๋ก์ปค Pub/Sub์ Publish/Subscribe์ ์ค์๋ง์ ๋๋ค. ๋จ์ด ์์ฒด์ ๊ตฌ๋ /๊ฒ์๋ผ๋ ๋ป์ด ์๋ฏ์ด Redis์์ Pub/Sub ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ฑ๋์ ํตํด ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ๋ก์จ ์๋ก ํต์ ํ ์ ์์ต๋๋ค. ๊ตฌ์กฐ ํด๋ผ์ด์ธํธ๋ ํ๋์ Topic์ "Sub"ํ๊ณ , ํด๋น ํ ํฝ์ "Sub"ํ ๋ค๋ฅธ ๋ชจ๋ ํด๋ผ์ด์ธํธ๋ ํด๋น Topic์์ "Pub"๋๋ ๋ฉ์์ง๋ฅผ ์์ ํฉ๋๋ค. Topic์ด๋ผ๋ ๋งค๊ฐ์ฒด๋ฅผ ํตํด์ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ฏ๋ก ์์ ์์ ๋ฐ์ ์๊ฐ ์๋ก๋ฅผ ์์ง ๋ชปํ๋๋ผ๋ ๋ฉ์์ง๋ฅผ ์ก์์ ํ ์ ์์ต๋๋ค. ํน์ง ๋ฉ์์ง๋ Redis์ ์ ์ฅ๋์ง ์๊ณ ์ฑ๋์ ๊ตฌ๋ ํ๋ ํด๋ผ์ด์ธํธ์ ์ค์๊ฐ์ผ๋ก ์ ์ก๋๋ค๋ ์ ์ ์ ์ํด์ผ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ๋๋ฉด ์ด๋ฅผ ๋ฐ๋ก ์ญ์ ํฉ๋๋ค. ์์ ์ด๋ฅผ ํต..
[Redis] ์์ธํ ์์๋ณด๊ธฐ! (6) - ํ์ฉ ์์ ์ ์ฅ์ ํฌ์ธํธ
ํ์ฉ ์์ Counting Strings ๋จ์ ์ฆ๊ฐ ์ฐ์ฐ INCR / INCRBY / INCRBYFLOAT / HINCRBY / HINCRBYFLOAT / ZINCRBY Bits ๋ฐ์ดํฐ ์ ์ฅ๊ณต๊ฐ ์ ์ฝ ์ ์๋ก ๋ ๋ฐ์ดํฐ๋ง ์นด์ดํ ๊ฐ๋ฅ userid ๊ฐ์ด 0 ์ด์์ ์ ์๊ฐ์ผ ๋๋ง ์นด์ดํ ์ด ๊ฐ๋ฅ ์ํ์ ํ ๊ฐ์ด ์์ ๋์๋ ์ฌ์ฉ ๋ถ๊ฐ SETBIT / BITCOUNT HyperLogLogs ๋๋์ ์ ๋ํฌํ ๋ฐ์ดํฐ๋ฅผ ์นด์ดํ ํ ๋ ์ ์ set๊ณผ ๋น์ทํ์ง๋ง ์ ์ฅ๋๋ ์ฉ๋์ด ๋งค์ฐ ์์ ์น์ฌ์ดํธ์ ๋ฐฉ๋ฌธํ ์ ๋ํฌํ IP ์ / ํ๋ฃจ ์ข ์ผ ํฌ๋กค๋งํ URL ์ / ๊ฒ์์์ง์์ ๊ฒ์๋ ์ ๋ํฌํ ๋จ์ด ์ PFADD / PFCOUNT / PFMERGE Messaging Lists ์์ฒด์ ์ผ๋ก blocking ๊ธฐ๋ฅ์ ์ ๊ณตํด์ Event ..
[Redis] ์์ธํ ์์๋ณด๊ธฐ! (5) - ์ํคํ ์ฒ
Replication replicaof ์ปค๋งจ๋๋ก ๊ฐ๋จํ๊ฒ ๋ณต์ ์ฐ๊ฒฐ ๋น๋๊ธฐ์ ๋ณต์ Master๊ฐ ๋ค์ด๋๋๋ผ๋ Replica๊ฐ ์๋น์ค๋ฅผ ๊ณ์ ํ ์ ์์ HA ๊ธฐ๋ฅ์ด ์์ผ๋ฏ๋ก ์ฅ์ ์ํฉ ์ ์๋ ๋ณต๊ตฌ replicaof no one ์๋ฒ ๋ค์ด์ AOF ๋๋ RDB๋ก ์ฌ์์ replication ๊ณผ์ ์์ fork๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ๋ฐ์ ๊ฐ๋ฅ ํน์ ์ปค๋งจ๋ disable ํ๊ธฐ Sentinel ์ผํฐ๋์ ์ผ๋ฐ ๋ ธ๋๋ค์ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋ง(monitoring)ํ๋ ์ญํ ์๋ ํ์ผ์ค๋ฒ ๊ฐ๋ฅํ HA ๊ตฌ์ฑ ๋ง์คํฐ๊ฐ ๋น์ ์์ด๋ฉด ์๋ ํ์ผ์ค๋ฒ(Automatic Failover) ์ฐ๊ฒฐ ์ ๋ณด ๋ณ๊ฒฝ ํ์ ์์ ์ผํฐ๋ ๋ ธ๋๋ ํญ์ 3๋ ์ด์, ํ์๋ก ์กด์ฌํด์ผ ํจ ๊ณผ๋ฐ์ ์ด์์ ์ผํฐ๋์ด ๋์ํด์ผ ํ์ผ์ค๋ฒ ์งํ ์) ๋คํธ์ํฌ์ ์ ..
[Redis] ์์ธํ ์์๋ณด๊ธฐ! (4) - ์์์ฑ
๋ฐ์ดํฐ ์ด์๊ณผ ๊ด๋ จ๋ ๊ฒ์ผ๋ก redis์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ ์ ์ฅํ ์ ์๋ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. Redis๋ In-memory ๋ฐ์ดํฐ ์คํ ์ด ์๋ฒ ์ฌ์์ ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ ์ค ๋ณต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํด๋ ์ฌ๋์ ์ค์ ๋ฐ์ ์ ๋ฐ์ดํฐ ๋ณต์ ๋ถ๊ฐ Redis๋ฅผ ์บ์ ์ด์ธ์ ์ฉ๋๋ก ์ฌ์ฉํ๋ค๋ฉด ์ ์ ํ ๋ฐ์ดํฐ ๋ฐฑ์ ํ์ AOF Append Only File ๋ฐฉ์ ๋ชจ๋ write/update ์ปค๋งจ๋๋ฅผ log ํ์ผ์ ๊ธฐ๋กํ๋ ํํ redis ํ๋กํ ์ฝ ํํ๋ก ์ ์ฅ RDB snapshot ๋ฐฉ์ ์๊ฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ด์ฉ์ disk์ ์ฎ๊ฒจ๋ด๋ ๋ฐฉ์ ๋ฐ์ด๋๋ฆฌ ํ์ผ ํํ๋ก ์ ์ฅ AOF vs RDB ์ ํ ๊ธฐ์ค redis๋ฅผ ์บ์๋ก๋ง ์ฌ์ฉํ๋ค๋ฉด ๋ ๋ค ์ธ ํ์ ์๋ค. 1. ๋ฐฑ์ ์ ํ์ํ์ง๋ง ์ด๋ ์ ๋ ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํด๋ ๊ด์ฐฎ์ ๊ฒฝ์ฐ ..
[Redis] ์์ธํ ์์๋ณด๊ธฐ! (3) - ์บ์ฑ ์ ๋ต
๋ฐ์ดํฐ ์ ํ๊ณผ ํด๋น ๋ฐ์ดํฐ์ ๋ํ ์ก์ธ์ค ํจํด์ ์ ๊ณ ๋ คํด์ ์ ํํด์ผ ํ๋ค. ์ฝ๊ธฐ ์ ๋ต Look-Aside(Lazy Loading) ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์์ ์ด ๋ง์ ๋ ์ฌ์ฉ (๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ) Cache Hit ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค. ๋จผ์ cache ์๋ฒ(redis)๋ฅผ ํ์ธํ๋ค. cache์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด DB๋ฅผ ์กฐํํ์ง ์๊ณ cache์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ๋ฐํํ๋ค. (Cache Hit) Cache Miss ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค. ๋จผ์ cache ์๋ฒ(redis)๋ฅผ ํ์ธํ๋ค. cache ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด DB๋ฅผ ์กฐํํ์ฌ cache ์๋ฒ์ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๋ค. (Cache Miss) Lazy Loading cache๋ ์ฐพ๋ ๋ฐ์ดํฐ๊ฐ ์์ ๋์๋ง ์ ๋ ฅ๋๊ธฐ ๋๋ฌธ์ lazy loading์ด๋ผ๊ณ ..
[Redis] ์์ธํ ์์๋ณด๊ธฐ! (2) - ๋ฐ์ดํฐ ํ์
Redis๋ ๋ค์ํ ๋ฐ์ดํฐ ํ์ ๊ณผ ๋ฐ์ดํฐ ํ์ ๋ณ ์ปค๋งจ๋๋ฅผ ์ ๊ณตํฉ๋๋ค. Key ์ค์ ํฌ์ธํธ Key๋ ๋ฌธ์์ด์ด๋ฏ๋ก ์ต๋ 512MB๊น์ง ๊ฐ๋ฅ ๊ธธ์ด ๋ฑ ๊ฐ๋ ์ฑ์ ๊ณ ๋ คํด์ผํ๊ณ , ์คํค๋ง๋ฅผ ์ ์งํ ์ ์๋๋ก ์ค๊ณํ ๊ฒ ex) user:1000:followers Strings ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ Redis ๋ฐ์ดํฐ ์ ํ ํ ์คํธ, ์ง๋ ฌํ๋ ๊ฐ์ฒด ๋ฐ ์ด์ง ๋ฐฐ์ด์ ํฌํจํ ๋ฐ์ดํธ ์ํ์ค๋ฅผ ์ ์ฅ, ์ด๋ฏธ์ง ์ ์ฅ ๊ฐ๋ฅ ์บ์ฑ์ ์์ฃผ ์ฌ์ฉ๋์ง๋ง ์นด์ดํฐ๋ฅผ ๊ตฌํํ๊ณ , ๋นํธ ์ฐ์ฐ์ ์ํํ ์ ์๋ ๊ธฐ๋ฅ๋ ์ ๊ณต ๋จ์ผ ๋ฌธ์์ด์ ์ต๋ 512MB ์ ๋ฌธ์์ด ์ ์ฅํ๊ณ ๊ฒ์ > SET user:1 minju OK > GET user:1 "minju" ์ง๋ ฌํ๋ JSON ๋ฌธ์์ด ์ ์ฅํ๊ณ ์ง๊ธ๋ถํฐ 100์ด ํ์ ๋ง๋ฃ๋๋๋ก ์ค์ > SET ticket:27 "\"..
[Redis] ์์ธํ ์์๋ณด๊ธฐ! (1) - ๊ฐ๋ ๋ฐ ํน์ง
redis๋? โ ๊ณต์๋ฌธ์์์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋์ด ์์ต๋๋ค. Redis๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์บ์, ๋ฉ์์ง ๋ธ๋ก์ปค ๋ฐ ์คํธ๋ฆฌ๋ฐ ์์ง์ผ๋ก ์ฌ์ฉ๋๋ ์คํ ์์ค(BSD ๋ผ์ด์ผ์ค), ๋ฉ๋ชจ๋ฆฌ ๋ด ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์ฅ์์ ๋๋ค. Redis๋ strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. Redis๋ ๊ธฐ๋ณธ ์ ๊ณต ๋ณต์ , Lua ์คํฌ๋ฆฝํ , LRU ์ ๊ฑฐ, ํธ๋์ญ์ ๋ฐ ๋ค์ํ ์์ค์ ์จ๋์คํฌ ์ง์์ฑ์ ๊ฐ์ถ๊ณ ์์ผ๋ฉฐ Redis Sentinel์ ํตํ ๊ณ ๊ฐ์ฉ์ฑ ๋ฐ Redis ํด๋ฌ์คํฐ๋ฅผ ํตํ ์๋ ํํฐ์ ๋์ ์ ๊ณตํฉ๋๋ค. redis๋ remot..