개요
Redis TTL 은 EXPIRE 명령어로 쉽게 설정할 수 있다.
한 번 설정한 TTL이 '갱신'되거나 '유지'되는 케이스를 미리 알고 사용해야한다.
이 글은 Redis Command 별 TTL이 언제 갱신 또는 유지되는지를 소개한다.
키에 매핑된 값 전체를 완전히 대치하는 연산만이 TTL을 갱신한다.
ex)
- DEL
값을 아예 '삭제' 해버린다. - SET
값을 새 값으로 아예 '대치' 해버린다.
키에 매핑된 기존 값에 연산을 하거나
값을 추가하는 연산은 TTL을 유지한다.
ex)
- INCR / DECR
기존 값에 +-1 - LPUSH / LPOP
기존 List에 원소 추가/제거 - SADD/SREM
기존 Set에 원소 추가/제거 - HSET
기존 property 를 변경 - RENAME
key 이름을 변경
member2team 이라는 SET 을 만들고 300초 TTL을 설정한 후
새 값(team2)를 추가한 뒤 다시 TTL을 조회한 결과 기존 TTL값이 유지되어 284초가 남음을 나타낸다.
RENAME 명령어는 Redis 키 이름을 변경하므로 값에 영향이 없다.
따라서 기존 TTL이 유지된다.
Conclusion
TTL 갱신 | TTL 유지 | |
발생 케이스 | Value 를 완전히 대치하는 경우 | Value 일부 값을 추가/삭제 Key 이름만 변경 |
Redis Command | - DEL - SET |
- INCR/DECR - LPUSH/LPOP - SADD/SREM - HSET - RENAME |
Reference
'DataBase > Redis' 카테고리의 다른 글
[Redis] TTL - 어떤 방식으로 만료된 키를 제거할까? (0) | 2024.12.22 |
---|---|
[Redis] DataStructure Lifecycle (0) | 2024.12.19 |
[Redis] redis.conf 권장설정 (0) | 2021.12.21 |