본문 바로가기

Spring/Redis

(5)
Redis 백업 및 복구(RDB, AOF) Redis를 작년 프로젝트에서 사용해보고 이번 프로젝트에서도 사용하기로 했다. Redis는 인메모리 데이터 저장소로 읽기 성능이 뛰어나 캐싱, 세션 저장소 등 다양한 곳에서 많이 사용된다. 하지만 인메모리 데이터 특성상 휘발성으로 종료되는 경우 데이터가 유실된다. 기존 프로젝트에서는 현재 채팅방 인원수를 카운팅 해야하기에 유실되도 상관이 없었다. 이번 프로젝트에서는 속도 개선과 DB에 데이터를 저장하게 되면 너무 방대한 양의 데이터가 저장되고 조회수 어뷰징 방지, 최근 조회 글, 다운로드 글 등 데이터가 유실되면 안되기에 데이터를 다시 DB에 저장해야 하나 고민중에 Redis에서 RDB와 AOF 라는 방법으로 백업이 가능하다고 한다. RDB와 AOF도 각각의 장단점이 있으니 비교하면서 상황에 맞게 적절한..
이메일로 인증 과정(SMTP,Redis) 지난 프로젝트를 진행하면서 Redis를 처음 써봤다. 실시간 채팅을 구현하여 채팅 내역을 저장하려고 했지만 서비스 특성상 채팅 내역은 DB에 저장하고 실시간 채팅 인원수 카운팅 하는데 사용했다. 회원가입 시 이메일을 통해 인증번호를 발송하고 해당 인증 번호를 Redis에 저장하여 인증 과정을 구현했다. Redis를 이전에 정리했었기에 간단하게 설명하자면 인메모리 데이터 구조로 컴퓨터의 메인 메모리 RAM에 데이터를 올려 사용하는 방법이다. 메모리에 데이터를 올리는 이유는 속도 때문이다. 저장공간에서 데이터를 가져오는 속도와 RAM에 올려진 데이터를 가져오는 속도가 수백배 이상 빠르다. 그러하기에 Redis는 빠른 속도가 장점이다. 1. Redis설치 이번에는 배포 서버에 설치하지 않고 간단하게 로컬에 설..
채팅방 인원수 카운팅 오류(Redis) 항해 9주차 마무리 웹소켓/STOMP를 이용한 실시간 채팅을 구현하였고 채팅에서 실시간 참여 인원을 redis에 저장해보기로 하였다. 사용자가 구독을 하는 순간 정상적으로 인원수 카운팅이 되었지만, 사용자가 다른 페이지를 가거나 브라우저를 닫으면 연결이 끊기는데 연결이 끊기는 순간 인원수 카운팅이 정상적으로 되지 않았다. 여기서 시간을 많이 쏟아부었다... 단순히 disconnect되는 순간 유저 카운팅을 -1되는 로직으로 구현을 하였는데, 구독한 채널에서 유저 카운팅이 되는게 아닌 엉뚱한곳에서 -1이 되고 있었다. 우리팀은 Redis를 구현하는데 생각보다 시간이 오래걸렸고 반드시 이 문제를 해결하고 싶다는 의지에 불탔다. 계속해서 header값에 log를 찍어보았고 실마리?를 찾았다. 해당 채널을 구독..
Embedded Redis 설정 Embedded Redis 설정 /** * 로컬 환경일경우 내장 레디스가 실행 */ @Profile("local") @Configuration public class EmbeddedRedisConfig { @Value("${spring.redis.port}") private int redisPort; private RedisServer redisServer; @PostConstruct public void redisServer() { redisServer = new RedisServer(redisPort); redisServer.start(); } @PreDestroy public void stopRedis() { if (redisServer != null) { redisServer.stop(); } }..
Redis(레디스) 항해 58일차 2022.03.08 Redis를 사용해서 채팅 내용을 저장 하려고 했으나 멘토님의 조언으로 채팅 내역은 DB에 저장하고 채팅 참여 인원수에 Redis를 사용해보기로 했다. Redis Key-value의 비정형 데이터로 구성해 저장, 관리하기 위한 비관계형 데이터베이스 관리 시스템 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMS 장점 List, Array데이터를 처리하는데 효과적이다. tring, List, Set, Hash , Sorted sets 등 여러 데이터 포맷을 지원하여 다양한 방식의 데이터 활용이 가능 원자성 보장을 위한 처리 함수를 제공한다. 여러 프로세스에서 같은 데이터를 요청 시 , Atomic 처리를 하기 위한 전용 함수를 제공 메모리를 활용하면서도 영속적인..