nosql 중 (TTL) expire callback event를 직접 전달받을 수 있는 스토리지는 2가지가 있는 것 같다.

(사실 다른 nosql을 써도 되지만 cron job과 같은 scheduler로 모든 데이터의 ttl expire 체크는 위험스러울 수 있어서..)


1. redis

2. couchbase


그러나 간접적으로 expire callback event를 받을 수 있는 스토리지는 1가지가 더 있다.


1. mongodb




redis의 expired item의 callback은 바로 오지 않고, get 하는 시점에 ttl expire 시간을 확인한 후, expire 된 값일 때에만 callback 이벤트를 전달한다.

(관련 내용 : http://redis.io/topics/notifications)




couchbase는 expire callback 을 http url로 받을 수 있다.


memcached를 들고 있는 터라 조금은 무거운 느낌이다.

(관련 내용 : http://blog.couchbase.com/sites/default/files/uploads/all/Expire%20Cycle.png)






mongodb는 standalone이 아닌 clusterset으로 실행시 oplog를 받을 수 있다. document에 op가 "d"가 있고 TTL 지정한 db.collection으로 검색해 보면, TTL expire event가 발생했음을 찾을 수 있다. (expire 시간에 바로 발생하지 않고, 1분 단위로 cron 체크해서 oplog로 남기는 것 같다.)








Posted by '김용환'
,