Start here. This is the direct spoken answer to practice first.
Why this question matters
An in-process cache intentionally retains objects, so its key cardinality, entry size, expiration, eviction, and total budget must be bounded. Without those controls, traffic shape determines process memory until the service becomes unstable.
An unbounded cache can keep growing as new keys are added, so memory usage depends on traffic shape instead of a controlled limit. If keys include user IDs, filters, or timestamps, cardinality can explode. I would set size limits or entry limits, expiration, eviction behavior, and metrics. I would also make sure cached objects are safe to share and not holding more data than the response needs.