added Caching via Redis,
refactored some of the caching logic to support multiple caching tools