add cache interfaces and redis implementation