Start here. This is the direct spoken answer to practice first.
Why this question matters
Redis client ownership and timeout behavior can create incidents even when key design is correct. A shared multiplexer, bounded asynchronous calls, and observable fallback keep cache latency from consuming request capacity.
With StackExchange.Redis I would usually reuse a long-lived ConnectionMultiplexer instead of creating a new connection per request. Creating connections repeatedly adds overhead and can exhaust resources. I would set explicit timeouts and handle Redis errors so a slow cache call does not hang the API longer than the caller can wait.