"๋ถ์ฐ๋ฝ์ด ํ์ํ ์ด์ ๊ฐ ๋ญ๊ฐ์? Redis์ Redisson์ ์ฐจ์ด์ ์?"
@Service
public class RedissonCacheService {
private final RedissonClient redissonClient;
// ๊ธฐ๋ณธ์ ์ธ ์บ์ ๊ธฐ๋ฅ๋ถํฐ ์์
public <T> void set(String key, T value, Duration ttl) {
RBucket<T> bucket = redissonClient.getBucket(key);
bucket.set(value, ttl.toSeconds(), TimeUnit.SECONDS);
}
}
// โ ์ฒ์ ์๋: RMap ์ฌ์ฉ
public <K, V> void putToMap(String mapName, K key, V value, Duration ttl) {
RMap<K, V> map = redissonClient.getMap(mapName);
map.put(key, value, ttl.toSeconds(), TimeUnit.SECONDS); // ์ปดํ์ผ ์๋ฌ!
}
๋ฌธ์ ์ : RMap์ ๊ฐ๋ณ ํค์ TTL์ ์ค์ ํ ์ ์์
// โ
ํด๊ฒฐ: RMapCache ์ฌ์ฉ
public <K, V> void putToMap(String mapName, K key, V value, Duration ttl) {
RMapCache<K, V> map = redissonClient.getMapCache(mapName);
map.put(key, value, ttl.toSeconds(), TimeUnit.SECONDS); // ์ฑ๊ณต!
}
// ๊ณ ๋ฏผ: TTL ์๋ ๋ฒ์ vs TTL ์๋ ๋ฒ์
putToMap(mapName, key, value) // 2๊ฐ ์ธ์
putToMap(mapName, key, value, ttl) // 4๊ฐ ์ธ์
๊ฒฐ๋ก : ๋ถ์ฐ๋ฝ ํจ์จ์ฑ์ ์ํด TTL ํฌํจ ๋ฒ์ ์ ํ
| ๊ตฌ๋ถ | RMap | RMapCache |
|---|---|---|
| ๊ฐ๋ณ ํค TTL | โ | โ |
| ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ | ๋ณดํต | ๋์ |
| ๋ถ์ฐ๋ฝ ์ ํฉ์ฑ | ๋ฎ์ | ๋์ |
// ์ ๊ฑฐ๋ ์ฝ๋๋ค
- RMap import ๋ฐ getMap() ๋ฉ์๋ (RMapCache๋ง ์ฌ์ฉ)
- get() ๋ฉ์๋์ Class<T> type ํ๋ผ๋ฏธํฐ (๋ฏธ์ฌ์ฉ)
Q: Redis์ Redisson์ ์ฐจ์ด์ ์?
A: Redis๋ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๊ณ , Redisson์ Redis ๊ธฐ๋ฐ์
Java ๋ถ์ฐ ๊ฐ์ฒด ๋ฐ ์๋น์ค ํ๋ ์์ํฌ์
๋๋ค.
- Redis Template: ๋จ์ํ ํค-๊ฐ ์กฐ์
- Redisson: ๋ถ์ฐ๋ฝ, ๋ถ์ฐ ์ปฌ๋ ์
๋ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ ์ ๊ณต
Q: ๋ถ์ฐ๋ฝ์ด ์ ํ์ํ๊ฐ์?
A: ๋ถ์ฐ ํ๊ฒฝ์์ ๋์์ฑ ์ ์ด๋ฅผ ์ํด ํ์ํฉ๋๋ค.
์์: ํฌ์ธํธ ์ง๊ธ ์์คํ
- ์ฌ์ฉ์๊ฐ ๋์์ ์ฌ๋ฌ ์์ฒญ์ ๋ณด๋ผ ๋
- ์ค๋ณต ์ง๊ธ ๋ฐฉ์ง๋ฅผ ์ํ ๋ฝ ํ์
- TTL๋ก ๋ฐ๋๋ฝ ๋ฐฉ์ง
Q: RMap๊ณผ RMapCache์ ์ฐจ์ด์ ์?
A: ๊ฐ๋ณ ํค TTL ์ง์ ์ฌ๋ถ๊ฐ ํต์ฌ ์ฐจ์ด์ ์
๋๋ค.
- RMap: ๋งต ์ ์ฒด์๋ง TTL ์ค์ ๊ฐ๋ฅ
- RMapCache: ๊ฐ๋ณ ํค๋ง๋ค ๋ค๋ฅธ TTL ์ค์ ๊ฐ๋ฅ
- ๋ถ์ฐ๋ฝ์์๋ RMapCache๊ฐ ๋ ์ ํฉ
๐ฏ ํต์ฌ ๋ฉ์์ง
๊ธฐ์ ๋ฉด์ ๋๋น๋ฅผ ์ํด ์์ํ Redisson ๋์ ์ด ์ค์ ๋ถ์ฐ ์์คํ ์ ๋์์ฑ ์ ์ด์ ๋ํ ๊น์ ์ดํด๋ก ์ด์ด์ก์ต๋๋ค. ๋จ์ํ ๊ธฐ์ ์คํ ์ถ๊ฐ๊ฐ ์๋, ์ค๋ฌด์์ ๋ง์ฃผํ ์ ์๋ ๋ฌธ์ ๋ค์ ๋ฏธ๋ฆฌ ๊ฒฝํํ๊ณ ํด๊ฒฐ์ฑ ์ ์ค๋นํ๋ ๊ณผ์ ์ด์์ต๋๋ค.