Redis: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์บ์ฑ์ ํ์
์๊ฐ
Redis(๋ฆฌ๋์ค)๋ ์คํ ์์ค, ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์คํ ์ด๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์บ์, ๋ฉ์์ง ๋ธ๋ก์ปค ๋ฑ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ๋๋ ํค-๊ฐ ์ ์ฅ ์์คํ ์ ๋๋ค. ์ด๋ ์ฑ๋ฅ ํฅ์์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ, ๋์คํฌ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ๊ณผ ๋น๊ตํด ๋น ๋ฅธ ์๋ต ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
Redis์ ์ญํ
๋ฐ์ดํฐ๋ฒ ์ด์ค: ์ฃผ๋ก ์ธ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ฌ์ฉ๋๋ฉฐ, ๋์ ์ฝ๊ธฐ/์ฐ๊ธฐ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
์บ์: ๋ฐ์ดํฐ ์บ์ฑ์ ๋ง์ด ์ฌ์ฉ๋์ด ๋น ๋ฅธ ์๋ต์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋ฉ์์ง ๋ธ๋ก์ปค: Publish-Subscribe ํจํด์ ์ง์ํ์ฌ ๋ฉ์์ง ๊ธฐ๋ฐ ํต์ ์ ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
Redis์ ์ฅ๋จ์
์ฅ์
๋์ ์ฑ๋ฅ: ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ ๋น๋๊ธฐ์ ์ผ๋ก ๋์คํฌ์ ์ ์ฅํจ์ผ๋ก์จ ๋น ๋ฅธ ์๋ต ์๊ฐ์ ๋ณด์ฅํฉ๋๋ค.
๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ง์: ๋ฌธ์์ด, ํด์, ๋ฆฌ์คํธ, ์ , ์ ๋ ฌ๋ ์งํฉ ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ง์ํ์ฌ ์ ์ฐํ ํ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
์คํ ์์ค ๋ฐ ํ๋ฐํ ์ปค๋ฎค๋ํฐ: ์คํ ์์ค๋ก ๊ฐ๋ฐ๋์ด ์์ด ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ์ ์ธ๊ณ์ ์ผ๋ก ํ๋ฐํ ์ปค๋ฎค๋ํฐ๊ฐ ์ง์ํ๊ณ ์์ต๋๋ค.
๋จ์
๋ฉ๋ชจ๋ฆฌ ์ ์ฝ: ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฉ๋ชจ๋ฆฌ์ ์ ํ์ด ์์ต๋๋ค.
๋จ์ผ ์ค๋ ๋ ๋ชจ๋ธ: ๋ฉํฐ์ฝ์ด๋ฅผ ํ์ฉํ์ง ๋ชปํ๋ฉฐ, ํน์ ์ํฉ์์ ๋ณ๋ชฉ ํ์์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
Redis์ ์์ ์ฝ๋
๋ฌธ์์ด ์ ์ฅ ๋ฐ ์กฐํ:
SET key1 "Hello, Redis!" GET key1
ํด์ ์ฌ์ฉ:
HSET user:1 username "john_doe" HGET user:1 username
๋ฆฌ์คํธ ์ฌ์ฉ:
LPUSH mylist "item1" LPUSH mylist "item2" LRANGE mylist 0 -1
์บ์ฑ ํ์ฉ:
import redis r = redis.StrictRedis(host='localhost', port=6379, db=0) key = 'cached_data' if not r.exists(key): # ๋ฐ์ดํฐ๋ฅผ ์บ์ฑ data = fetch_data_from_database() r.set(key, data) r.expire(key, 3600) # 1์๊ฐ ๋์ ์ ์ง # ์บ์์์ ๋ฐ์ดํฐ ์ฝ๊ธฐ cached_data = r.get(key)
Pub-Sub ํจํด:
import redis import threading def subscriber(): r = redis.StrictRedis(host='localhost', port=6379, db=0) p = r.pubsub() p.subscribe('channel') for message in p.listen(): print('Received:', message['data']) def publisher(): r = redis.StrictRedis(host='localhost', port=6379, db=0) r.publish('channel', 'Hello, subscribers!') # ๊ตฌ๋ ์ ์ค๋ ๋ ์์ sub_thread = threading.Thread(target=subscriber) sub_thread.start() # ๋ฐํ์ ์คํ publisher()
์ฐ๊ด๋ ๊ธฐ์
Redis Sentinel: Redis์ ๊ณ ๊ฐ์ฉ์ฑ์ ์ํ ๋ถ์ฐ ์์คํ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค.
Redis Cluster: ์ฌ๋ฌ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ์ฌ ์ฒ๋ฆฌํ๋ ํด๋ฌ์คํฐ ๋ชจ๋๋ก, ๊ณ ๊ฐ์ฉ์ฑ๊ณผ ํ์ฅ์ฑ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค.
Memcached: Redis์ ์ ์ฌ
ํ๊ฒ ์ธ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ ํค-๊ฐ ์ ์ฅ ์์คํ ์ผ๋ก, ์ฃผ๋ก ๋ถ์ฐ ์บ์ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.
- Spring Data Redis: Spring ํ๋ ์์ํฌ์์ Redis์์ ํตํฉ์ ์ง์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฅ์์ํต๋๋ค.
Redis๋ ๋ค์ํ ํ์ฉ ๊ฐ๋ฅ์ฑ์ ์ ๊ณตํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์บ์, ๋ฉ์์ง ์์คํ ๋ฑ์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ ์ฐํ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ๋ฐ์ด๋ ์ฑ๋ฅ์ ํตํด ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ๋ฐํ๊ฒ ํ์ฉ๋๊ณ ์์ต๋๋ค. Redis๋ฅผ ํตํ ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ํฅ์๊ณผ ํ์ฅ์ฑ์ ๊ณ ๋ฏผํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ๊ฐ ๋ ๊ฒ์ ๋๋ค.
'IT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JavaScript Callstack: ์คํ ์ปจํ ์คํธ์ ํต์ฌ (0) | 2024.03.05 |
---|---|
Pinpoint: ๋ถ์ฐ ์์คํ ๋ชจ๋ํฐ๋ง ๋๊ตฌ (0) | 2024.03.05 |
Pub-Sub Pattern: ์ด๋ฒคํธ ๊ธฐ๋ฐ ํต์ ์ ํต์ฌ (0) | 2024.03.02 |
Builder Pattern: ๊ฐ์ฒด ์์ฑ์ ์ ์ฐํจ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๋ค (0) | 2024.03.02 |
JVM(Java Virtual Machine)์ ์ดํด์ ํ์ฉ (0) | 2024.03.01 |
๋๊ธ