728x90
반응형
0. 이 글을 작성하는 이유
이번에 Redis에 expired설정을 하는데 방법이 하나만 있는 게 아니어서 기법을 기록하기 위함
1. 우선 Redis의 expire를 간단하게 설명하면
해당 Key의 만료 시간을 설정한다. TTL(Time To Live)은 초 단위로 관리가 된다.
만약 해당 Key의 expire값을 가져올 때 아래 경우의 수를 볼 수 있다.
- 설정이 되어있지 않다 : -1
- Key가 제거되어 있다 : -2
- 만료가 되었다: 0
- 아직 남은 기간 : 양수 값
문제는 만료가 된다고 Key가 제거되는 것은 아니라는 거다. 이에 대해 Redis에서는 Key제거에 대한 정책을 두고 있다.
가장 대표적인 것으로는 만료된 Key에 접근 시 제거하는 것과 알아서 Redis Key를 검색하면서 만료된 것들을 제거하는 정책 등이 있는데 Key제거 정책에 대해서는 아래 문서를 참고하도록 하자.
2. 일단 나는 Kotlin에서 어떻게 설정했는가?
RedisTemplate에서는 2개를 제공해주고 있었다.
expireAt이 있고 expire가 있다.
expire
해당 key에 대해 지금부터 timeout을 측정한다.
timeout을 10으로 하고 TimeUnit을 SECOND로 설정 -> 10초 뒤 만료
expireAt
언제 만료를 시킬지 시점을 지정해 준다.
Instant로 2026년 10월 20일 15시 30분 20초를 변환해서 설정 -> 2026년 10월 20일 15시 30분 20초에 만료
3. Key가 있는 걸 체크하고 넣고 싶다면
setIfAbsent라는 함수가 존재한다.
아쉽게도 시점을 넣는 기능은 없다.
대신 이 함수는 Key가 존재하는지 체크를 해서 없으면 넣는다. 그리고 그 결과를 Boolean값으로 알려준다.
4. 마무리
이렇게라도 정리를 하지 않으면 점점 까먹을 것 같아 한 번씩 정리를 해야겠다.
728x90
반응형
'AMQP > Redis' 카테고리의 다른 글
그래서 Redis는 왜 사용해야하고 뭐가 좋은가?(2) - 캐시로 사용하기 (0) | 2023.09.11 |
---|---|
그래서 Redis는 왜 사용해야하고 뭐가 좋은가?(1) (0) | 2023.09.03 |
Redis-stack + kotlin + spring boot = 좋은 블로그 글감 (0) | 2023.08.31 |