lru cache (least recently used)

**LRU Cache (Least Recently Used)** is a cache eviction policy that removes the **least recently accessed item** when the cache reaches its capacity limit. It operates on the principle that items accessed recently are more likely to be accessed again soon — a property called **temporal locality**. **How LRU Works** - **Access**: When an item is read or written, it moves to the **front** (most recently used position). - **Eviction**: When the cache is full and a new item needs to be inserted, the item at the **back** (least recently used) is evicted. - **Data Structure**: Typically implemented using a **doubly-linked list** (for O(1) move operations) combined with a **hash map** (for O(1) lookups). This combination provides O(1) time for both get and put operations. **Comparison with Other Eviction Policies** - **LRU**: Evicts the least recently **used** item. Best for workloads with temporal locality. - **LFU (Least Frequently Used)**: Evicts the least frequently **accessed** item. Better when popular items should persist even if not recently accessed. - **FIFO (First In, First Out)**: Evicts the oldest item regardless of access patterns. Simplest but least adaptive. - **Random**: Evicts a random item. Surprisingly effective and very simple to implement. - **ARC (Adaptive Replacement Cache)**: Self-tuning algorithm that balances between recency and frequency. Used by some databases and file systems. **LRU in AI/ML Systems** - **KV Cache Management**: In transformer inference, LRU-style eviction manages the key-value cache when it exceeds memory limits (e.g., **H2O** and **StreamingLLM** use attention-score-based variants). - **Model Caching**: GPU-mounted model caching — when multiple models compete for GPU memory, evict the least recently used model. - **Embedding Cache**: Cache computed embeddings with LRU eviction — frequently queried documents stay cached. - **Response Cache**: Cache LLM responses with LRU eviction — popular queries remain cached while rare queries are evicted. **Python Implementation** Python provides `functools.lru_cache` as a built-in decorator for function-level LRU caching. For distributed systems, **Redis** supports LRU-style eviction natively. LRU is the **default choice** for most caching scenarios due to its simplicity, O(1) performance, and effectiveness across a wide range of access patterns.

Go deeper with CFSGPT

Get AI-powered deep-dives, save terms, and run advanced simulations — free account.

Create Free Account