최근 Redis를 사용하는 비즈니스 로직을 작성하는 과정 중 Redis의 키값으로 데이터를 찾아 해당하는 필드 값을 수정해야하는 일이 있었다.
이 과정에서 인 메모리(In-Memory) DB의 특성을 잘이해하지 못하고 로직을 작성하였다.
우선, 현재 환경은 CrudRepository를 상속 구현하여 Redis에 데이터 입출력 및 조회작업을 수행하고 있었다.
그렇기에 Id가 UUID값으로 설정되어 있어, findById()
를 통해 Redis Entity를 찾은 후 변경감지를 수행하려 했으나 관계형 데이터베이스가 아니기에 변경감지를 수행할 수 없었다.
그래서 rename으로 변경하는 로직 또한 구성해봤지만, 이는 인메모리 DB의 특성을 전혀 살리지 못한 구조였다.
Redis는 모든 데이터를 메모리에 저장한다. 그렇기 때문에 메모리에 접근하여 직접적으로 값을 수정하는 작업은 오버헤드를 크게 유발한다.
또한, 메모리 상의 데이터를 수정하면 데이터를 복사하고 재배치하는 등의 작업이 필요하기에 추가적인 시간이 소모되는 단점도 존재한다.
그래서 수정보다는 삭제 후 재저장하는 것을 지향한다.
'ComputerScience > Database' 카테고리의 다른 글
[DB] Master - Slave 아키텍처 (0) | 2024.05.25 |
---|---|
[MySql] 인덱스 (0) | 2024.02.22 |
DB 힌트 개념정리 (0) | 2023.04.01 |