//////
Search
🔳

2번 문제

두 번째 문제는 생각보다 간단하다. Redis는 내부적으로 일종의 Caching System 처럼 행동하도록 설계 되었다. 따라서 관련 기능들이 내장되어 있다. (자동 Timeout 기능도 내장되어 있어서 수행할 수 있다.) 따라서 Caching 한 정보를 어플리케이션 내부에 영원히 유지하지 않도록 만들 수 있다. 일반적으로 하루 정도 유지하도록 둔다.
client.set('color', 'red', 'EX', 5); client.get('color', console.log); // before expiration: null red // after expiration: null null
JavaScript
복사
위와 같이 key & value를 설정하면 5초 뒤에 Caching 정보가 만료된다.
이렇듯 특정 시간 뒤에 만료하는 것도 좋지만, 이것으로 모든 것이 해결되지는 않는다. 가장 필요한 것은 특정 Event 발생에 따라서 Redis내에 유지하고 있는 데이터에 대해서 초기화 하는 것도 필요하다.
예를 들면, 유저가 블로그 글을 생성을 했는데 Redis의 Caching 정보가 만료되지 않은 상태라 새 글을 보지 못하고 만료되기 전까지 기다렸다가 봐야한다면 이는 바람직한 상황이 아니다. (아마 사용하고 있는 어플리케이션이 고장났다고 생각할 것이다.) 이런 경우 유저가 글을 새롭게 생성을 했을 때 Redis의 Caching 정보에 변동이 필요하다. 따라서 위에 제시된 것처럼 글을 생성하는 Event가 발생했을 때 Redis내에 유지하고 있는 데이터를 초기화하면, 새로운 Route Path로 이동을 하면서 (Redis가 비어있기 때문에) DB에서 값을 불러올 것이고 1번을 해결하면서 작성한 것처럼 자동으로 Caching이 다시 될 것이다.
데이터 초기화는 이전에 앞에서 설명한 것처럼 client.flushall 함수를 사용할 수 있다.