we should support both cache.set()
support timeout
fix async task