본문 바로가기

Redis

(3)
[Redis] Sentinel failover 테스트 최근에 Redis HA 를 공부하다가, 다음과 같은 의문이 들었습니다. "sentinel구조에서 master 노드가 다운되었을때, failover 과정중 들어오는 데이터들은 어떻게 되지???" 검색을 해봐도 원하는 내용이 설명되어 있는 자료를 찾기 힘들어서 직접 테스트 해보기로 결심했습니다. 구성 구성은 아래와 같습니다. redis-server version : 7.2.1 lettuce core : 6.2.4 monitoring : redis-stat 아래 더보기를 여시면 sentinel 구성파일을 다운받을 수 있습니다. 혹시나 따라하실분은 아래 파일을 다운받아서 사용하시면 될것 같습니다. 더보기 처음에는 편하게 docker로 구성했는데, sentinel에서 master-node ip를 응답하는 과정에서..
[Redis] Cluster 환경에서 Transaction 에러 해결하기 Redis는 기본적으로 원자적으로 동작하지만, 사용하기에 따라 갱신손실의 문제등 정합성이 맞지 않는 문제가 발생할 수 있습니다. 저장하는 구조를 변경해, Redis에서 제공하는 자료구조로 해결할 수 있다면 최고겠지만 그렇지 않다면, Redis에서 제공하는 트랜잭션을 사용해야합니다. 트랜잭션 관련 내용은 다음 글에 설명되어 있습니다. https://dlwnsdud205.tistory.com/354 [Redis] Transaction으로 갱신손실 문제 해결하기 갱신손실 문제 예시 Redis는 기본적으로 원자적으로 동작하지만, 사용에 따라 여러가지 문제가 발생할 수 있다. (단, 레디스에서 제공하는 원자적으로 동작하는 set ... get 등의 메소드를 활용할 수 dlwnsdud205.tistory.com 그..
[Redis] Transaction으로 갱신손실 문제 해결하기 갱신손실 문제 예시 Redis는 기본적으로 원자적으로 동작하지만, 사용에 따라 여러가지 문제가 발생할 수 있습니다. (단, 이 글에서는 레디스에서 제공하는 원자적으로 동작하는 set ... get 등의 메소드를 활용할 수 없는 상황이라 가정하겠습니다.) 아래표는 조회하고 업데이트하는 예시입니다. 이 트랜잭션의 결과는 어떻게 될까요? redis client 1 redis client 2 1 GET 1 -> 1 이 조회됨. 2 GET 1 -> 1 이 조회됨 3 도메인 조건 확인 도메인 조건 확인 4 SET 1 3 5 SET 1 4 실제로 실행해보면, redis client 1 에서 업데이트한 3은 사라진것을 알 수 있습니다. Redis의 각 명령이 원자적으로 동작한다는것이 클라이언트의 요청 sequence도..