add cache interface and memcache implementation