Spring에서 Redis 사용 방법
Spring에서 Redis를 사용하기 위해서는 먼저 Redis를 설치해야 합니다. Redis는 In-Memory 데이터 구조 저장소로, key-value 기반으로 데이터를 저장합니다. 이를 사용하면 데이터를 더 빠르게 접근할 수 있습니다.
Redis 자료구조
Redis에서 사용되는 자료구조는 다음과 같습니다.
Strings
가장 간단한 형태의 자료구조로, 문자열을 저장합니다.
ValueOperations<String, String> ops = redisTemplate.opsForValue();
ops.set("key", "value");
Lists
여러 개의 문자열을 저장할 수 있는 자료구조입니다. 리스트의 맨 왼쪽 또는 맨 오른쪽에 요소를 추가하거나 삭제할 수 있습니다.
ListOperations<String, String> listOps = redisTemplate.opsForList();
listOps.leftPush("list", "value1");
listOps.leftPush("list", "value2");
Sets
중복되지 않는 문자열 집합을 저장합니다.
SetOperations<String, String> setOps = redisTemplate.opsForSet();
setOps.add("set", "value1");
setOps.add("set", "value2");
Hashes
key-value 쌍을 저장하는 자료구조입니다.
HashOperations<String, String, String> hashOps = redisTemplate.opsForHash();
hashOps.put("hash", "key1", "value1");
hashOps.put("hash", "key2", "value2");
ZSets
문자열 집합을 저장하며, 각 요소는 점수(score)와 함께 저장됩니다.
ZSetOperations<String, String> zSetOps = redisTemplate.opsForZSet();
zSetOps.add("zset", "value1", 1);
zSetOps.add("zset", "value2", 2);
Spring에서 Redis 사용 방법
Spring에서 Redis를 사용하기 위해서는 org.springframework.data.redis.core.RedisTemplate 클래스를 사용합니다. 이 클래스는 Redis 서버와의 상호 작용을 담당합니다.
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("localhost", 6379);
return new LettuceConnectionFactory(config);
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory());
return template;
}
}
위와 같이 Redis 연결 정보를 설정하고 RedisTemplate을 생성하면 Redis를 사용할 수 있습니다.
@Autowired
private RedisTemplate<String, String> redisTemplate;
public void setValue(String key, String value) {
ValueOperations<String, String> ops = redisTemplate.opsForValue();
ops.set(key, value);
}
public String getValue(String key) {
ValueOperations<String, String> ops = redisTemplate.opsForValue();
return ops.get(key);
}
위와 같이 RedisTemplate을 사용하여 Redis 데이터를 조작할 수 있습니다.
Redis의 주요 기능
Cache로 사용하기
Spring에서 Redis는 주로 Cache로 사용됩니다. 이를 위해 @Cacheable, @CachePut, @CacheEvict 등의 어노테이션을 사용할 수 있습니다.
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
// ...
}
@CachePut(value = "users", key = "#user.id")
public User updateUser(User user) {
// ...
}
@CacheEvict(value = "users", key = "#id")
public void deleteUserById(Long id) {
// ...
}
위와 같이 어노테이션을 사용하여 Redis를 캐시로 사용할 수 있습니다.
Pub/Sub
Redis는 Pub/Sub 패턴을 지원합니다. 이를 사용하면 메시지를 발행하고, 이를 미리 등록된 구독자들이 수신할 수 있습니다.
@Autowired
private RedisTemplate<String, String> redisTemplate;
public void publish(String channel, String message) {
redisTemplate.convertAndSend(channel, message);
}
@RedisListener(channels = "channel")
public void onMessage(String message) {
// ...
}
위와 같이 RedisTemplate을 사용하여 메시지를 발행하고, @RedisListener 어노테이션을 사용하여 메시지를 수신할 수 있습니다.
Redis Lua Script
Redis는 Lua 스크립트를 지원합니다. 이를 사용하면 Redis 서버에서 실행되는 스크립트를 정의할 수 있습니다.
@Autowired
private RedisTemplate<String, String> redisTemplate;
public void executeLuaScript() {
DefaultRedisScript<String> script = new DefaultRedisScript<>();
script.setScriptSource(new ResourceScriptSource(new ClassPathResource("script.lua")));
script.setResultType(String.class);
redisTemplate.execute(script, Collections.singletonList("key"), "value");
}
위와 같이 RedisTemplate을 사용하여 Lua 스크립트를 실행할 수 있습니다.
결론
Spring에서 Redis를 사용하는 방법에 대해 알아보았습니다. Redis를 캐시로 사용하거나 Pub/Sub 패턴을 통해 메시지를 수신하는 등 다양한 방법으로 활용할 수 있습니다. Redis는 In-Memory 데이터 구조 저장소로, key-value 기반으로 데이터를 저장합니다. 이를 사용하면 데이터를 더 빠르게 접근할 수 있습니다.
'NoSQL > Redis' 카테고리의 다른 글
[Redis] Redis Docker 사용법 (0) | 2022.09.23 |
---|---|
[Redis] 데이터 타입 Sets (0) | 2022.09.23 |
[Redis] 데이터 타입 Lists (0) | 2022.09.23 |
[Redis] 데이터 타입 String (0) | 2022.09.23 |
Redis UI 툴 추천 (0) | 2022.08.24 |
댓글