๋ฐ์ํ

๐ฏ Redis Template
Redis Template๋ Spring Data Redis๊ฐ ์ ๊ณตํ๋ ๊ณ ์์ค ํด๋ผ์ด์ธํธ ๊ฐ์ฒด์ด๋ค.
์ฆ, ์๋ฐ ์ฝ๋์์ Redis ๋ช ๋ น์ ์ฝ๊ณ ์์ ํ๊ฒ ๋ค๋ฃฐ ์ ์๋๋ก ๋ํํด๋์ ๋ฐ๊ตฌ๋๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
๐ง Redis Template์ด ํ์ํ ์ด์
| ์ ํต์ ์ ๊ทผ | RedisTemplate ์ ๊ทผ |
| Lettuce/Jedis ํด๋ผ์ด์ธํธ๋ฅผ ์ง์ ํธ์ถ → SET key value, GET key ๋ฑ ๋ฌธ์์ด ๋ช ๋ น ์กฐํฉ |
์๋ฐ ๋ฉ์๋ ํธ์ถ → template.opsForValue().set(key, obj) ๊ฐ์ด ํ์ -์์ ํ๊ณ , ํธ๋์ญ์ ·ํ์ดํ๋ผ์ธ ๋ฑ ๊ณ ๊ธ ๊ธฐ๋ฅ ํฌํจ |
| ์ง๋ ฌํ/์ญ์ง๋ ฌํ๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฒ๋ฆฌํด์ผ ํจ | Serializer ์ ๋ต์ ํ ๋ฒ๋ง ์ง์ ํ๋ฉด ๋ชจ๋ ํธ์ถ์ ์๋ ์ ์ฉ |
| ๋ณด์ผ๋ฌํ๋ ์ดํธ(์ฐ๊ฒฐ ์ด๊ณ /๋ซ๊ณ , ์์ธ ๋ณํ) ๋ง์ | Spring์ด ์ปค๋ฅ์ ์๋ช ์ฃผ๊ธฐ·์์ธ ๋ณํ์ ์์์ ์ฒ๋ฆฌ |
๐งฑ ํต์ฌ ๊ตฌ์ฑ ์์
1๏ธโฃ ์ฐ๊ฒฐ ํฉํ ๋ฆฌ (RedisConnectionFactory)
- Lettuce / Jedis ๋ฑ Raw ๋๋ผ์ด๋ฒ๋ฅผ ์ถ์ํํจ
- ํ ํ๋ฆฟ์ ์ฌ๊ธฐ์์ ์ปค๋ฅ์ ์ ๊บผ๋ด์ ์ฌ์ฉํจ
2๏ธโฃ ์ง๋ ฌํ ์ ๋ต
- ํค, ๊ฐ, ํด์ ํค, ํด์ ๊ฐ ๋ง๋ค ๋ฐ๋ก ์ง์ ๊ฐ๋ฅํจ
- ex. StringRedisSerializer, GenericJackson2JsonRedisSerializer ๋ฑ
3๏ธโฃ Operation Helper
| ๋ฉ์๋ | Redis ๊ตฌ์กฐ ๋์ | ์์ |
| opsForValue() | String | ๋ฌธ์์ด/JSON ๊ฐ |
| opsForHash() | Hash | Map ๊ตฌ์กฐ |
| opsForList() | List | ํ/์คํ |
| opsForSet() | Set | ์ค๋ณต ์๋ ์งํฉ |
| opsForZSet() | Sorted Set | ์ ์ ๊ธฐ๋ฐ ๋ญํน |
๐ ์์
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void sample() {
// 1) ๋จ์ String (๋๋ JSON) ์ ์ฅ
redisTemplate.opsForValue().set("accessaToken:123", "abc123", Duraton.ofMinutes(30
));
// 2) Hash ์์: ์ธ์
์ ์ฅ
Map<String, Object> sessionDate = Map.of(
"userId", 42,
"role", "ADMIN"
);
redisTemplate.opsForHash().putAll("session:42", sessionData);
// 3) Sorted Set ์์: ์ ์ํ
redisTemplate.opsForZSet().add("ranking:game01", "soyeon", 9800);
}
๐ค StringRedisTemplate๊ณผ์ ์ฐจ์ด
- StringRedisTemplate
- ์ ๋ค๋ฆญ์ด <String, String> ๊ณ ์ ์
- ๊ธฐ๋ณธ Serializer๊ฐ ๋ชจ๋ StringRedisSerializer์
- ์ ๋ง ๋ฌธ์์ด๋ง ๋ฃ๊ณ ๋นผ๋ฉด ๋๋ค๋ ๋จ์ํ ์ํฉ์์ ์ฌ์ฉํ๊ธฐ ํธํจ
- RedisTemplate<K, V>
- ํ์ ์ ์์ ๋กญ๊ฒ ์ง์ ํ๊ณ , ์ง๋ ฌํ ์ ๋ต์ ์ํ๋ ๋๋ก ์กฐํฉ ๊ฐ๋ฅํจ
- JSON, ProtoBuf, Kryo ๋ฑ ์ปค์คํ Serializer๋ ์ฐ๊ฒฐ ๊ฐ๋ฅํจ
- ํด์, ๋ฆฌ์คํธ ๋ฑ ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋ค๋ฃฐ ๋ ๋๋ถ๋ถ ์ด๊ฑธ ์
๐ ๊ฒฐ๋ก
- RedisTemplate๋ ์คํ๋ง์ด ํฌ์ฅํ Redis Helper ๊ฐ์ฒด์ด๋ค.
- ์ด๋ ์ง๋ ฌํ ๋ฐ ์ฐ๊ฒฐ ๊ด๋ฆฌ, ์์ธ ์ฒ๋ฆฌ ๋ฑ์ ์์์ ์ฒ๋ฆฌํด์ค๋ค.
- ๋ํ, ์๋ฐ ์นํ์ ๋ฉ์๋ ๋๋ถ์ ์ฝ๋ ๊ฐ๋ ์ฑ์ด ๋๊ณ , ๋ฒ๊ทธ ๊ฐ๋ฅ์ฑ๋ ์ค์ด๋ ๋ค.
- ๋ฌธ์์ด ๋ฟ๋ง ์๋๋ผ JSON ๊ฐ์ฒด, ์ธ์ , ๋ญํน ๋ฑ ๋ค์ํ ํ์ ๋ฐ ๊ตฌ์กฐ๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๊ธฐ ์ข๋ค.
์ถํ ํ์ดํ๋ผ์ธ, ํธ๋์ญ์ , Bound Operations, ์คํ ์ฝ๋ฐฑ ๋ฑ์ ๊ดํ ๊ฒ๋ ๊ณต๋ถํด์ ์ ์ฉํ ์์ ์ด๋ค.
๋ฐ์ํ
'๐ป๊ณต๋ถ ๊ธฐ๋ก > ๐ Backend' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Backend] @Transactional (3) | 2025.07.07 |
|---|---|
| [Backend] RedisConfig ์์ฑ: Redis ์ฐ๋ํ๊ธฐ (1) | 2025.06.29 |
| [Backend] Redis TTL + JWT (0) | 2025.06.22 |
| [Backend] JWT (0) | 2025.06.21 |
| [Backend] Java 17 VS Java 21 (2) | 2025.06.17 |