naver / arcus-memcached

ARCUS memory cache server
https://github.com/naver/arcus
Apache License 2.0
70 stars 55 forks source link

touch 기능 개발 #487

Open minkikim89 opened 4 years ago

minkikim89 commented 4 years ago

memcached 프로젝트에는 지정한 키에 대해 expire time을 재설정하는 touch 기능이 존재한다. 이를 ARCUS에도 개발하도록 한다. 만약 키가 존재하지 않는다면 NOT_FOUND를 반환한다.

DubleDstudy commented 4 years ago

이슈 제가 맡아 진행 하겠습니다.

namsic commented 2 months ago

기본적으로 memcached protocol과 호환을 위해서 touchgat 명령이 제공되어야 할 것입니다. redis에서 gat에 대응되는 명령을 제공하는지를 먼저 확인해야 할 것 같습니다.

@cheesecrust redis에서 특정 item에 대한 expire time을 조작하는 명령으로 어떤 명령을 제공하고 있는지 확인하고 알려주면 좋겠습니다.

cheesecrust commented 2 months ago

memcached 에서의 touch, gat

redis 에서의 대응되는 명령

하지만 redis 의 만료시간은 key 마다 설정되기 때문에 일반 KV 타입은 모두 EXPIRE 명령어로 설정 할 수 있지만, Collection 타입에 있어서는 collection 자체는 키에 대응 되기 때문에 리스트나 맵에 대해서는 만료시간을 설정 할 수 있지만 그 안의 item에 대해서는 설정할 수 없습니다.

정리하자면 redis 에는 key 의 expire time 을 재설정 하는 EXPIRE 명령이 존재하지만, redis 의 ttl 은 item 이 아닌 key 에 부여되기 때문에 KV 관계와 collection 타입일 경우 전체 collection 자체 (item 들을 담는 리스트나 맵을 뜻합니다.) 에 이 명령을 사용하여 ttl 을 조절합니다.

namsic commented 2 months ago

하지만 redis 의 만료시간은 key 마다 설정되기 때문에 일반 KV 타입은 모두 EXPIRE 명령어로 설정 할 수 있지만, Collection 타입에 있어서는 collection 자체는 키에 대응 되기 때문에 리스트나 맵에 대해서는 만료시간을 설정 할 수 있지만 그 안의 item에 대해서는 설정할 수 없습니다.

위 용어 기준으로, arcus도 item(key) 단위로 expire time이 설정되고, 개별 element 수준에서 만료 시간을 설정할 수는 없습니다.

expire time 재설정

데이터 조회하면서 expire time 재설정

namsic commented 1 month ago

@cheesecrust gat 명령도 추가해 주면 좋겠습니다.