Redis는 특정 시간 동안만 데이터가 저장되는 TTL(Time To Live) 기능을 'expire'라는 명칭으로 제공한다. JWT refresh token을 저장할 때 처럼 일정한 시간 동안만 데이터를 저장해야 하는 경우에 해당 기능이 유용하게 사용된다.
문득 "Redis는 어떻게 TTL을 지원할까?"라는 의문이 들었다.
Redis는 수동적인 만료와 능동적인 만료를 지원한다.
Redis가 초당 10회로 다음 작업을 수행한다.
- TTL이 첨부된 임의의 키 20개를 테스트한다.
- 20개 중 만료된 모든 키를 삭제한다.
- 20개 중 25% 이상이 만료된 경우, 1단계를 반복한다.
set [key name] [value]
키-값 추가하기
expire [key name] [seconds]
TTL 설정하기
expireat [key name] [seconds from Unix start point]
만료될 시간 추가하기(단, Unix timestamp를 기준으로 작성해야 한다.
ttl [key name]
남은 시간 확인하기
pttl [key name]
남은 millisecond 확인하기
[참고자료]
https://redis.io/commands/expire/
https://www.pankajtanwar.in/blog/how-redis-expires-keys-a-deep-dive-into-how-ttl-works-internally-in-redis
https://www.digitalocean.com/community/cheatsheets/how-to-expire-keys-in-redis
저도 redis를 사용해보면서 TTL의 사용에 대해 고민해본적이 있는데요 데이터 정합성을 위해 적절한 TTL을 사용하는 것이 중요하다고 생각하는데 예지님은 어떤 기준으로 TTL을 설정하셨는지 궁금합니다~~