Each one is a service that passes its tests and still fails in production. Pick one.
We added a cache last week, and database load did not drop. The visible tests pass. Work out what production does that the tests do not.
Repeat visits from the same shopper hit the cache.
The cache stays within its configured size and expiry.
When it is full, drop the shoppers who have not visited for the longest time.
A purchase still refreshes that shopper's recommendations.