added Redis caching