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