Spring Data Reids에서 Redis Streams를 구현 Redis Streams는 redis pub/sub과 다르게 message queueing system 즉 queue 형태의 자료구조에 publisher가 append하면, consumer가 데이터를 읽는다. 이때 consumer group 단위로 데이터를 읽을 수 있다. redis pub/sub과 다르게 redis 내의 메모리를 사용해 데이터를 저장하기 때문에 consumer는 놓친 부분부터 데이터를 다시 읽을 수 있다. publishing spring을 통해서 redis streams에 데이터를 append할 수 있다. low-level의 RedisConnection을 사용할 수도 있고, high-level의 StreamOperati..
Spring Data Redis
spring data redis는 spring framework의 Cache Abstraction을 구현 redis를 해당 Cache Abstraction으로 사용하기 위해서는 RedisCacheManager를 사용 @Bean public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) { return RedisCacheManager.create(connectionFactory); } 다양한 설정을 적용할 수 있다. RedisCacheManager cacheManager = RedisCacheManager.builder(connectionFactory) .cacheDefaults(RedisCacheConfiguration...
Serializers redis에 데이터가 저장되는 방식 / spring에서 읽어오는 방식 등을 설정할 수 있다. JdkSerializationRedisSerializer(Default) 기본 serializer 기본 java 직렬화 방식을 사용 기본 java 직렬화 방식은 취약한 원격 코드가 그대로 실행될 수 있다는 보안 취약점이 존재 신뢰할 수 없는 환경에서는 해당 직렬화 방식은 권장하지 않음 serialVersionUID를 설정하지 않으면 클래스의 기본 해쉬값을 serialVersionUID로 사용하기 때문에 클래수 구조가 조금이라도 바뀌면 기존 데이터의 역직렬화가 실패 serialVersionUID를 설정한다 해도 클래스에 필드가 제거되거나 수정되는 경우에는 역직렬화 예외가 발생 직렬화시 타입에 ..
RedisConnection에서 디테일한 부분들을 직접 관리하지 않을 수 있도록 해준 모듈 대부분의 경우 RedisTemplate을 주로 사용 다양한 feature set 제공 기존 RedisConnection은 low-level methods를 사용해 binary values를 반환하는 반면 RedisTemplate의 경우 다양한 serialization 전략 및 connection management를 수행 RedisTemplate은 thread-safe 여러 Threads에서 동시에 사용이 가능 Configure RedisTemplate @Configuration class MyConfig { @Bean LettuceConnectionFactory connectionFactory() { return..
Redis는 다양한 setup 환경에서 동작할 수 있고. 각 환경마다의 별도 설정이 필요 Redis Standalone single Redis Server를 사용할 때 가장 쉬운 방법 @Configuration class RedisStandaloneConfiguration { /** * Lettuce */ @Bean public RedisConnectionFactory lettuceConnectionFactory() { return new LettuceConnectionFactory(new RedisStandaloneConfiguration("server", 6379)); } /** * Jedis */ @Bean public RedisConnectionFactory jedisConnectionFactor..
Spring에서 Redis를 사용하기 위해서는 IoC Container를 사용해 spring과 redis를 연결해야 함 Java connector를 사용 Java connector를 통해 Spring Data Redis API를 통해 일관되게 동작하도록 할 수 있다. RedisConnection과 RedisConnectionFactory interface를 통해 이를 제공 RedisConnection and RedisConnectionFactory 해당 interface를 통해 redis와 연결 및 통신을 수행 그 외에도 Spring DAO Exception를 발생시키기 때문에 에러를 일관적으로 처리할 수 있도록 함 💡 Redis의 native library API가 직접적으로 필요한 경우에는 getNa..