콘텐츠로 이동
Javers 문서0.2

Redis 영속 저장

최신 안정판 Javers 0.2.1 릴리스 기준

JaVers 스냅샷을 기존 Redis 운영 환경에서 읽고 써야 할 때 선택합니다. Redis라고 해서 곧바로 내구성 있는 이벤트 로그가 되는 것은 아닙니다. 영속성 모드, 복제, 백업, 장애 조치, 캐시 축출 정책에 따라 장애 뒤 이력이 남을지가 달라집니다.

0.2.1은 두 구현을 제공합니다.

  • LettuceCdoSnapshotRepository(name, RedisClient)는 전용 동기 명령 연결을 씁니다. 스냅샷 목록과 GlobalId 인덱스를 MULTI/EXEC로 함께 갱신하고, 동시 쓰기 충돌을 피하려고 쓰기 전용 연결을 사용합니다.
  • RedissonCdoSnapshotRepository(name, RedissonClient)는 Redisson의 목록 멀티맵과 맵을 사용합니다. 스냅샷 저장과 순서 저장은 하나의 트랜잭션이 아닙니다.

두 구현 모두 GlobalId별 스냅샷을 최신순으로 읽고 커밋 순서를 별도 구조에 보관합니다. 저장소를 다시 만들면 저장된 순서 값에서 최신 커밋을 복원합니다. 구현은 LettuceCdoSnapshotRepository.ktRedissonCdoSnapshotRepository.kt에 있습니다.

서비스가 Lettuce 클라이언트의 수명을 이미 관리한다면 Lettuce를, Redisson 분산 객체가 운영 표준이라면 Redisson을 고르세요. 두 구현의 저장 구조가 같다고 가정해 같은 네임스페이스를 공유하면 안 됩니다.

Redis 오류는 호출자에게 전달되지만 일부만 갱신될 가능성은 남습니다. 디코딩에 실패한 값은 조회에서 빠질 수 있고, 넓은 JQL 조회는 키와 스냅샷을 프로세스 메모리에 올립니다. 커밋 ID와 스냅샷 버전으로 재시도 결과를 확인하고 키 수, 메모리, 조회 지연을 함께 감시하세요. 클라이언트와 토폴로지는 Projects Redis 매뉴얼로 이어집니다.