#34681 DualCache refresh can evict a fresh Redis batch-throttle entry at capacity
### Summary
At current `litellm_internal_staging` (`f7078e2e086056d535bad79e15908419de0c47b7`), `LimitedSizeOrderedDict.__setitem__()` evicts the oldest entry whenever the map is at capacity, including when updating an existing key.
In the DualCache Redis batch-throttle path, refreshing an expired existing timestamp can therefore remove a different, still-fresh throttle entry. A subsequent lookup for that unrelated key then performs an avoidable Redis batch read instead of remaining throttled.
### Deterministic API-free reproduction
I exercised the pinned `DualCache.async_batch_get_cache()` path with mocked in-memory and Redis caches only. With time fixed at `100`, throttle expiry `10`, and these timestamps:
```python cache.last_redis_batch_access_time["unrelated"] = 99.9 # still fresh cache.last_redis_batch_access_time["expired"] = 0.0 # needs refresh
await cache.async_batch_get_cache(["expired"]) await cache.async_batch_get_cache(["unrelated"]) ```
Observed:
```text capacity=2 Redis calls: [["expired"], ["unrelated"]] throttle keys: ["expired", "unrelated"] ```
Control:
```text capacity=3 Redis calls: [["expired"]] throttle keys: ["unrelated", "expired"] ```
The c…