Redis 영속 저장
최신 안정판 Javers 0.2.1 릴리스 기준
JaVers 스냅샷을 기존 Redis 운영 환경에서 읽고 써야 할 때 선택합니다. Redis라고 해서 곧바로 내구성 있는 이벤트 로그가 되는 것은 아닙니다. 영속성 모드, 복제, 백업, 장애 조치, 캐시 축출 정책에 따라 장애 뒤 이력이 남을지가 달라집니다.
0.2.1은 두 구현을 제공합니다.
LettuceCdoSnapshotRepository(name, RedisClient)는 전용 동기 명령 연결을 씁니다. 스냅샷 목록과 GlobalId 인덱스를MULTI/EXEC로 함께 갱신하고, 동시 쓰기 충돌을 피하려고 쓰기 전용 연결을 사용합니다.RedissonCdoSnapshotRepository(name, RedissonClient)는 Redisson의 목록 멀티맵과 맵을 사용합니다. 스냅샷 저장과 순서 저장은 하나의 트랜잭션이 아닙니다.
두 구현 모두 GlobalId별 스냅샷을 최신순으로 읽고 커밋 순서를 별도 구조에 보관합니다. 저장소를 다시 만들면 저장된 순서 값에서 최신 커밋을 복원합니다. 구현은 LettuceCdoSnapshotRepository.kt와 RedissonCdoSnapshotRepository.kt에 있습니다.
서비스가 Lettuce 클라이언트의 수명을 이미 관리한다면 Lettuce를, Redisson 분산 객체가 운영 표준이라면 Redisson을 고르세요. 두 구현의 저장 구조가 같다고 가정해 같은 네임스페이스를 공유하면 안 됩니다.
Redis 오류는 호출자에게 전달되지만 일부만 갱신될 가능성은 남습니다. 디코딩에 실패한 값은 조회에서 빠질 수 있고, 넓은 JQL 조회는 키와 스냅샷을 프로세스 메모리에 올립니다. 커밋 ID와 스냅샷 버전으로 재시도 결과를 확인하고 키 수, 메모리, 조회 지연을 함께 감시하세요. 클라이언트와 토폴로지는 Projects Redis 매뉴얼로 이어집니다.