Method decorator: cache the method's result (cache-aside).
On the first call the method runs and its return value is stored; subsequent calls with the same
key return the cached value until it expires. Concurrent cold calls share one execution (stampede
protection). If the cache module is not enabled, the method runs normally (graceful no-op).
Method decorator: cache the method's result (cache-aside).
On the first call the method runs and its return value is stored; subsequent calls with the same key return the cached value until it expires. Concurrent cold calls share one execution (stampede protection). If the cache module is not enabled, the method runs normally (graceful no-op).