본문 바로가기

레디스7

[레디스] 레디스 클러스터를 도커에서 구성해보자 레디스 클러스터란? 센티넬보다 발전된 형태로 멀티 마스터 구조를 지원합니다. 샤딩을 지원해 데이터 분산으로 가용성을 높입니다. Failover 기능으로 센티넬 없이 자동으로 노드 관리를 해줍니다. cluster는 스케일 아웃이 가능합니다. 확장성이 좋습니다. [Deprecated] 스케일 아웃 시에 해시 알고리즘의 이슈를 피하기 위해 Consistent Hashing을 적용해 모든 키의 재매핑을 막고 평균적인 키만 재매핑 시켜줍니다. 레디스 클러스터와 Consistent Hashing Tech Note 정보 stdio.h 님이 작성하신 글입니다. 카테고리: [ NoSQL ] 게시됨: 03 December 2019 작성됨: 03 December 2019 최종 변경: 03 December 2019 조회수: .. 2022. 3. 17.
[레디스] 메모리 관리 기법 RDB vs AOF 차이 레디스 노드 로그를 분석하다가 RDB와 AOF라는 메모리 관리 방식에 대해 알게 되어 궁금증이 생겨 찾아보게 되었습니다. 데이터의 영속성을 위한 두 가지 방식입니다. RDB(Redis DataBase) 스냅샷과 비슷한 역할을 합니다. 특정 시점의 메모리 데이터를 전부 바이너리 파일로 저장합니다. AOF 파일보다 사이즈가 작아 로딩이 빠릅니다. 저장 방법은 redis.conf의 save로 설정합니다. save 10 1: 10초간 1번 이상 변경 시 저장 여러 개도 지정해 하나라도 만족하면 수행합니다. 메모리를 많이 사용합니다. 대규모 데이터에 적합합니다. AOF(Append Only File) appendonly.aof에 저장됩니다. INSERT,UPDATE,DELETE 명령 수행 시마다 기록됩니다. ap.. 2022. 3. 17.
[레디스] 레디스 Master-Slave를 도커에 올려보자 이번 포스팅에서는 Master - Slave를 구성하고 도커에 올려보고 장애 시 어떤 로직이 발생하는지 알아보겠습니다. Sentinel Mode를 활용해 마스터 슬레이브를 감시하는 노드도 함께 만들어보겠습니다. docker compose를 활용하면 쉽게 노드를 구성할 수 있습니다. 구조는 Master 1, Slave 2, Sentinel 3개로 구성하겠습니다. 센티넬은 최소 3개 이상 홀수로 구성해야 합니다. docker-compose.yml version: '2' services: # master : bitnami/redis:6.2.6 redis-master: hostname: redis-master container_name: redis-master image: bitnami/redis:6.2.6 e.. 2022. 3. 17.
[레디스] 레디스에 대해 알아보자 레디스란?? NoSQL으로 Key-Value 타입 저장소이다. 영속성을 지원하는 인메모리 데이터 저장소이다. 읽기 성능 증대를 위해 Replication 지원. 쓰기 성능 증대를 위한 샤딩을 지원. 문자열뿐만 아니라 리스트, 해시, 셋 등 다양한 데이터 형식을 지원. 1ms 이하 빠른 응답시간 지원한다. 파티셔닝 지원으로 스케일 아웃이 쉽다. 레디스와 멤캐시드와의 차이 멤캐시드 또한 메모리 객체 시스템 멤캐시드는 멀티쓰레드를 지원해 스케일업을 통해 많은 다중 작업 처리가 가능하지만 레디스는 싱글 스레드 기반이다. 멤캐시드는 문자열만 지원한다 그러나 레디스는 문자열뿐만 아니라 리스트, 해시, 셋 등 다양한 데이터 형식을 지원한다. 스냅샷을 지원해 장애 상황시 복구에 이용할 수 있다. Master-Slave.. 2022. 3. 17.
스프링 레디스 최근 검색어 관리하기 거래 플랫폼 프로젝트를 진행하던중 검색 창에 최근 검색어 기능 추가를 했으면 좋겠다는 의견이 있었습니다. 2가지 방법을 생각했는데 첫번째는 search 엔티티를 만들어 관리하는 방식이었습니다. 두번째는 레디스에서 최근 검색어를 위해 리스트 자료구조를 이용해서 관리하는 방식을 생각했습니다. 첫 번째 방식은 인메모리 캐시 방식인 레디스에 비해 속도가 느릴거 같고 관리 측면에서도 원하는 사이즈가 꽉 찾을때 시간순으로 정렬한 후에 가장 오래된 컬럼을 삭제하고 다시 insert를 해야한다는 점이 번거로웠습니다. 그래서 엔티티를 아예 만들지않고 accountId로 식별할 수 있는 레디스 리스트를 만들어서 관리하는 방식을 택했습니다. 로직은 사용자가 검색을 하게되면 accesstoken으로 사용자를 조회하고, 키 값.. 2022. 2. 10.
스프링 레디스 redis cache 프로젝트에 적용하기 실행 환경 mac air m1 몬터레이 spring boot: 2.6.2 redis: 6.2.6 Docker Desktop: 4.4.2 스프링에서 레디스를 사용하기 위해서 도커에 redis 컨테이너가 실행 중인 상태로 두신 상태를 전제로 진행하겠습니다. 1. build.gradle에 implementation 추가하기 data-redis와 cache manager 사용을 위해 두 가지 모두 추가해줍니다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-cache' 2. @EnableCaching 추가 프로젝트에서 캐.. 2022. 2. 4.
스프링 레디스 Redis 에러 Creating Server TCP listening socket *:6379: bind: No error 실행 환경 - 윈도우 , redis 3.0.504 버전 혹시나 이 오류를 만나셨다면 1. cmd를 관리자 권한으로 실행 시켜주세요 2. redis-cli.exe를 실행 시켜주세요 3. shutdown을 입력한 후에 exit로 종료해주세요 4. redis-server.exe redis.windows.conf를 cmd 창에 입력하면 redis server가 실행됩니다!! 2022. 1. 18.