Open minkikim89 opened 4 years ago
이슈 제가 맡아 진행 하겠습니다.
memcached 에서의 touch
, gat
touch
: 주어진 key 에 대해서 item 을 fetch 하지 않고 expire time 만을 재설정 합니다.gat
: touch
와 하는 일은 같지만, item 을 fetch 하여 가져옵니다. redis 에서의 대응되는 명령
우선 redis 에도 touch
명령어가 있지만, redis 의 touch
는 key 의 last access time 을 바꾸는 것으로 redis 의 LRU 정책과 관련이 있어 보입니다.
현재 redis 에서는 expire time 과 관련해서 제공하는 명령은 EXPIRE
, PEXPIRE
을 제공합니다.
EXPIRE
: key 의 expire 값을 재설정 합니다. 단위는 second 입니다.PEXPIRE
: key 의 expire 값을 재설정 하는데, 이때의 단위가 millisecond 입니다.하지만 redis 의 만료시간은 key 마다 설정되기 때문에 일반 KV 타입은 모두 EXPIRE
명령어로 설정 할 수 있지만, Collection 타입에 있어서는 collection 자체는 키에 대응 되기 때문에 리스트나 맵에 대해서는 만료시간을 설정 할 수 있지만 그 안의 item에 대해서는 설정할 수 없습니다.
정리하자면 redis 에는 key 의 expire time 을 재설정 하는 EXPIRE
명령이 존재하지만, redis 의 ttl 은 item 이 아닌 key 에 부여되기 때문에 KV 관계와 collection 타입일 경우 전체 collection 자체 (item 들을 담는 리스트나 맵을 뜻합니다.) 에 이 명령을 사용하여 ttl 을 조절합니다.
하지만 redis 의 만료시간은 key 마다 설정되기 때문에 일반 KV 타입은 모두 EXPIRE 명령어로 설정 할 수 있지만, Collection 타입에 있어서는 collection 자체는 키에 대응 되기 때문에 리스트나 맵에 대해서는 만료시간을 설정 할 수 있지만 그 안의 item에 대해서는 설정할 수 없습니다.
위 용어 기준으로, arcus도 item(key) 단위로 expire time이 설정되고, 개별 element 수준에서 만료 시간을 설정할 수는 없습니다.
EXPIRE
명령으로 제공 (redis의 TOUCH
는 memcached의 touch
와 다른 명령)touch <key> <exptime>\r\n
으로 제공 가능할 것@cheesecrust gat
명령도 추가해 주면 좋겠습니다.
memcached 프로젝트에는 지정한 키에 대해 expire time을 재설정하는 touch 기능이 존재한다. 이를 ARCUS에도 개발하도록 한다. 만약 키가 존재하지 않는다면 NOT_FOUND를 반환한다.