How would you design and implement a caching layer to optimize database read performance for Wurl's backend services?