key based caching