AWS/질의응답&이슈처리

[AWS][ElastiCache] Redis 오래된 키 식별 및 삭제

고융고 2024. 10. 25. 10:41
반응형

[AWS][ElastiCache] Redis 오래된 키 식별 및 삭제

 

문의 사항

안녕하세요.

elasticache for redis 관련 몇가지 문의 드립니다.

1. elasticache for redis 지표를 확인해보니 사용가능한 메모리 양이 점점 줄어들고있어, 오래된 키들을 식별하여 일괄삭제 하고싶습니다
-> 3개월 이상된 키들 확인이 가능한지
-> 3개월 이전 데이터를 일괄로 삭제하는 방법

2. redis Json value 에 List 가 최대 100개까지 저장이 가능하다고 전달받았는데 그 설정이 redis 에 되어있는것인지, redis 자체에 되어있는 설정이라면 변경하는 방법 문의드립니다. (redis 설정이 아닌 저희쪽 어플리케이션 설정일수도있을 것 같습니다.)

3. 2번 문의에서 value 를 list 형태로 저장한다고 말씀드렸는데 각 key 에 몇개의 value 가 묶여있는지 조회하는 방법이 있는지 문의드립니다.

감사합니다.

 

답변

안녕하세요.
   
1.
우선 오래된 키들을 식별하기 위해서는 어플리케이션 코드에서 AWS Redis에 키를 만들 때 타임스탬프 또는 TTL을 설정하도록 수정해야합니다.
 
만약 위 설정이 되어 있다면 해당 값을 기준으로 직접 삭제하시면 됩니다.
 
설정이 되어 있지 않다면 원하는 방식의 삭제는 어려우나 maxmemory-policy 를 allkeys-lru 로 수정(기본값은 volatile-lru)하여 유사한 방식으로 삭제를 진행할 수 있습니다.
 
 
2.
관련해서는 최근 문의 이력에서 확인이 되지 않습니다만 Redis 는 메모리 용량에 의해 제한되기 때문에 다루시는 Json 데이터에 따라 제한이 100개 근처일 수는 있습니다.
 
말씀 하신 대로 어플리케이션 에서의 제어일 확률이 높을 것으로 보입니다.

 

추가적으로 도움이 될 내용을 말씀 드리면,
 
OBJECT <subcommand> 
를 활용해 키에 대한 상세 정보를 확인할 수 있습니다.
OBJECT help 치시면 사용 방법을 알 수 있으며
OBJECT IDLETIME KEY  명령을 치면,  키가 호출되지 않은 시간(초)이  얼마나 됐는지를 확인 하실 수 있습니다.
삭제해도 되는 키를 식별 후 ->  위 커맨드를 이용해 호출 되지 않은 시간 확인 -> 실제 삭제하는 프로그래밍이 좀 필요하실 듯 합니다.
https://redis.io/docs/latest/commands/object/
 
그 외 Expire 명령을 통해 키에 Expire 설정 옵션 정보도 공유 드립니다.
 
Expire key seconds [NX | XX | GT | LT]
NX: 해당 키에 만료 시간이 정의돼 있지 않을 경우에만 커맨드 수행
XX: 해당 키에 만료 시간이 정의돼 있을 때만 커맨드 수행
GT: 현재 키가 가지고 있는 만료 시간보다 새로 입력한 초가 더 클 때에만 수행
LT: 현재 키가 가지고 있는 만료 시간보다 새로 입력한 초가 더 작을 때에만 수행
https://redis.io/docs/latest/commands/expire/ 
 
 
2,3번에 관해 말씀 드리면,  JSON 사용에 있어서 64MB , 중첩 깊이(nested)는 128 까지 라는 제약이 있습니다.  
말씀 주신 List가  동일 레벨의  [  {a:1}, {b:2}, {c:3}  ]  이와 같은  json을 어레이 처럼  나열한 것과는 조금 다른 개념의 제약 사항으로 보입니다
https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/red-ug/json-document-overview.html
 
JSON.OBJLEN 이라는 명령이 있는데 이것으로 원하시는 조회가 될지 모르겠습니다.
https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/red-ug/json-objlen.html
 
 
감사합니다.

반응형