Redis Pub/Sub을 활용한 채팅 구현의 여정 - Service 레이어
·
Redis/Redis 채팅
서비스단 코드를 먼저 보여주고 각 메서드에 대해 설명하겠다.@Service@RequiredArgsConstructor@Slf4jpublic class ChatServiceImpl implements ChatService { private final ChatRoomRepository chatRoomRepository; private final RedisTemplate redisTemplate; private final RedisTemplate redisTemplateForSave; private final RedisTemplate redisTopicTemplate; private final UserRepository userRepository; private final No..
Trie와 Redis ZSET 비교: 키워드 자동완성 기능에 가장 효율적인 방법은?
·
Redis/Redis 개념
Redis를 사용해서 검색어 자동 기능검색을 구현하려고 할때 두 가지 방법으로 구현이 가능하다. 단, 조건은 중간 단어 검색이 아닌 첫 글자를 기준으로 검색했을때를 기준으로 선정한 방법이다.검색 엔진, 추천 시스템, 그리고 실시간 키워드 자동완성 기능은 사용자 경험(UX)을 크게 향상시킨다. 이러한 기능을 구현하기 위해 주로 사용되는 두 가지 접근법은 Trie 알고리즘과 Redis ZSET이다.이 글에서는 Trie와 Redis ZSET을 비교하고, 키워드 자동완성 기능에 어떤 방법이 더 효율적인지 살펴본다.1. Trie 알고리즘이란?Trie는 접두사 트리(Prefix Tree)라고 불리며, 문자열의 공통 접두사를 공유하는 자료구조다.Trie의 주요 특징접두사 검색에 최적화: 입력된 문자열의 접두사를 기준..
Redis Pub/Sub을 활용한 채팅 구현의 여정 - Chat Domain(Entity ~ Controller)
·
Redis/Redis 채팅
[이전글]이전 글에는 Redis와 채팅을 사용하기 위한 Config파일들을 알아보았다.https://sunro1994.tistory.com/254 Redis Pub/Sub을 활용한 채팅 구현의 여정 - 환경설정https://sunro1994.tistory.com/253 Redis Pub/Sub을 활용한 채팅 구현의 여정 - 개념편수많은 우여곡절 끝에 배포된 서버에 채팅 기능을 적용하게 되었다!간단히 말하자면 원래 담당했던 백엔드 팀원이 던져sunro1994.tistory.com [소개]이전 글에서는 Config파일을 사용해서 어떻게 Redis의 Pub/Sub 그리고 Websocket설정을 하는지 알아보았다.이번에는 Chat 도메인을 어떻게 설계했는지 Entity부터 Service까지 하나한 알아보려고 한..
[Redis] 레디스의 읽기/쓰기 전략
·
Redis/Redis 읽기쓰기 전략
[필요성]레디스를 사용하기 위해서는 왜 이런 전략이 필요할까?데이터의 일관성이 필요하기 때문이다.아래처럼 어떠한 데이터를 가져올 때 빈번하게 가져와야 하는 데이터는 캐시 메모리에 저장하여 더 빠른 처리가 가능하다.만약 200을 가진 주소의 값을 300으로 바꿔야 한다면 어디부터 수정하고 어떤 방식으로 수정해야 할까?메모리만 200을 300으로 바꾼다면 일관성이 깨지기 때문에 두 값을 모두 변경해야 한다는 사실은 자연스럽게 들 것이다. 이때 어떤 방법으로 데이터를 읽고 써야 하는지 그 효율을 위한 전략에 대해서 알아보고자 한다.[캐시 히트/캐시 미스]우선 전략을 세우기 전에 이러한 개념을 알고 가야 한다.캐시 히트란 캐시 스토어(redis)에 데이터가 있을 경우 바로 가져오며 매우 빠른 속도를 보인다.캐시..
Redis Pub/Sub을 활용한 채팅 구현의 여정 - 환경설정
·
Redis/Redis 채팅
https://sunro1994.tistory.com/253 Redis Pub/Sub을 활용한 채팅 구현의 여정 - 개념편수많은 우여곡절 끝에 배포된 서버에 채팅 기능을 적용하게 되었다!간단히 말하자면 원래 담당했던 백엔드 팀원이 던져놓은 빅 똥을 치우게 되었다.내 프로젝트의 스택은 아래와 같다.Java 17 / Spsunro1994.tistory.com이전 글에서는 Redis를 사용한 채팅 기능 구현을 위한 개념에 대해 간단히 알아보았다. 이번에는 WebSocket과 Redis의 Config파일 및 필요한 설정들에 대해 적어보려고 한다.@EnableWebSocketMessageBroker어노테이션을 적용하여 웹소켓 메세지 브로커에 대한 설정을 적용한다.통신에 필요한 목적지 설정(configureMess..
Redis Pub/Sub을 활용한 채팅 구현의 여정 - 개념편
·
Redis/Redis 채팅
수많은 우여곡절 끝에 배포된 서버에 채팅 기능을 적용하게 되었다!간단히 말하자면 원래 담당했던 백엔드 팀원이 던져놓은 빅 똥을 치우게 되었다.내 프로젝트의 스택은 아래와 같다.Java 17 / Spring 3.x / JPA / Redis / Spring Security / JWT / OAuth / Websocket / MySQL / Firebase그리고 처음 팀원이 던져놨던 채팅 구현을 위한 기능은 Kafka + Socket.io 였다. 내가 알기로 Kafka는 MSA구조에서 그룹으로 묶어 메세지를 전달하는 메세지 큐 방식에 적합한 절대 가볍지 않은 스펙의 프레임워크였으며, Socket.io 또한 Spring으로 만든 프로젝트가 아닌 별도로 서버가 생성되는 과정을 요구하는 방식이였으나 팀원을 믿고 기다렸..