본문 바로가기
NoSQL/Redis

[Redis] Spring에서 Redis 사용 방법

by 띵앤띵 2023. 3. 2.
728x90
반응형

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

댓글