무지를 아는 것이 곧 앎의 시작

캐시 2

[Redis] 다건 조회를 캐싱할 때 고민했던 것들

최근 Redis를 사용해서 여러 조건절을 가지는 검색 쿼리의 응답을 캐싱해야하는 기술적인 과제를 겪었다. 꽤나 많은 고민과 주변의 도움으로 나름대로의 해결법을 도출해냈고 그 과정을 기록할까 한다. 문제 원인 일단 상황을 설명하면, 단건 id로 찍어서 조회하는 쿼리는 캐시하기 쉽지만 다건 조회는 신경쓸 포인트가 많아진다. 이유는 원본 데이터에 변경이 일어났을 경우 정합성 때문인데 캐시를 사용하게 되면 발생하는 고질적인 문제다. 단건 조회의 경우 id로 캐시의 key를 특정할 수 있기 때문에 조회시 캐시하고, 이후로 캐시된 값을 반환하고 변경이 발생하면 변경시 해당 캐시를 무효화하게 하면 정합성이 맞춰진다. 반면, 검색 조건이 여러 개가 들어가는 다건 조회의 경우 검색 조건까지 key에 넣고 결과를 캐싱하기..

Redis 2023.02.21

캐시와 관련된 HTTP 헤더들

HTTP 요청을 통해 데이터를 주고 받을 때 네트워크 통신 비용이 발생한다. 만약 데이터가 변경되지 않은 상태라면, 이전에 요청을 통해 받은 데이터를 클라이언트나 캐시 서버에 캐시해둬서 오리진 서버측에 직접 요청하지 않고 통신 비용을 아낄 수 있지 않을까? HTTP에선 응답 데이터에 대해서 캐시를 어떻게 다룰 지에 대한 명세를 나타내는 헤더들이 존재한다. 이번 포스팅에선 이 헤더들에 대해 알아보겠다. Cache-Control Cache-Control 헤더는 캐시에 관련된 HTTP/1.1 부터 도입된 표준 헤더이다. 브라우저의 캐시 뿐만 아니라 프록시나 CDN에 대해서도 다룬다. 디렉티브라고 부르는 옵션들이 있고 콤마로 구분한다. 일반적으로 다음과 같은 옵션을 다룬다. no-cache Cache-Contr..

Web 2022.12.10