본문 바로가기
반응형

DB/redis8

Redis - 좋아요 구현(캐싱 전략, 저장 데이터 형식) https://velog.io/@enjoy89/Redis-%EC%A2%8B%EC%95%84%EC%9A%94-%EA%B8%B0%EB%8A%A5-%EC%BA%90%EC%8B%B1-%EC%A0%84%EB%9E%B5-%EA%B3%A0%EB%AF%BC-%EA%B3%BC%EC%A0%95 좋아요와 좋아요 취소는 서비스에 상당히 빈번히 일어날 수 있는 액션이다.또한 게시글을 조회할 때, 일반적으로 좋아요 수를 함께 보여주는 경우가 많다.즉, RDB에 빈번한 접근이 발생하고 count 쿼리까지 수행해야하므로 적지 않은 부하를 유발할 수 있다.이를 RDB 뿐만 아니라 Redis를 캐시 DB로 활용한다면 RDB의 부하를 줄일 수 있다. 이때, 어떤 방식의 캐싱전략을 사용할지와 저장되는 데이터 형식에 따라 캐싱 히트율과 메모.. 2025. 7. 22.
스프링 redis 직렬화와 역직렬화 Spring 애플리케이션과 Redis 간의 데이터 통신은 직렬화와 역직렬화를 필요로 한다.Redis는 문자열, 리스트, 해시, 집합 등 다양한 자료구조를 지원하지만,실제로는 모든 데이터를 byte[] 형태로 저장하고 처리한다.따라서 Redis와 Spring 간의 데이터 전달은 기본적으로 byte[] 형식으로 이루어지며,Spring 애플리케이션에서 이를 문자열, List, Set, Hash 등으로 활용하기 위해서는적절한 직렬화/역직렬화 설정이 반드시 필요하다. Spring에서는 StringRedisTemplate을 통해 Redis에 저장될 데이터를 처리하며,직렬화와 역직렬화를 내부적으로 자동 처리해준다.StringRedisTemplate을 이용하면 String, List, Set, Hash와 같은 자료구조.. 2025. 7. 20.
스프링 Redis 연동(feat. 스프링 캐시) 스프링 프로젝트에 Redis 연동을 위한 어떤 설정을 해야하고 각 역할이 무엇인지 알아보겠다. [build.gradle.kts]implementation("org.springframework.boot:spring-boot-starter-data-redis:3.2.3") RedisConnectionFactoryRedisConnectionFactory는 Redis 서버와의 연결을 생성하고 관리하는 역할을 한다.단일 인스턴스, master/slave, Cluster 모드에서 커넥션 생성과 관리의 추상화 타입이다. [RedisConnectionFactory의 구현체] LettuceConnectionFactoryJedisConnectionFactory클라이언트 방식비동기-NonBlocking동기-Blocking스.. 2025. 7. 17.
Redis 자료구조(feat. 시간복잡도) Redis 자료구조와 시간복잡도전체 키 조회keys * 모든 키를 조회하기에 시간복잡도가 O(N)이다. (N은 키의 갯수)Redis는 싱글 스레드 기반으로 동작하기에 keys *를 사용하면 해당 명령어 수행으로 인해 다른 명령어 처리가 늦어질 수 있다. Redis 모든 DB 키 삭제FLUSHALLFLUSHALL ASYNC ASYNC 키워드는 키 삭제를 비동기로 실행되도록 한다.FLUSHALL의 경우 동기적으로 실행되며 메모리에 key-value 삭제하는 처리가 모두 완료될때까지 다른 명령어는 block 된다.반면에 FLUSHALL ASYNC의 경우 참조관계만 끊어 놓고 실제 메모리에서 삭제는 백그라운드 스레드가 제거하는 처리를 진행하게 된다.(키를 저장하는 해시테이블에서 키 참조를 제거 후 백그라운드가 .. 2025. 7. 14.
반응형