Apple Critical #1: LRU Cache & Thread-Safe Architecture

Apple Critical #1: LRU Cache & Thread-Safe Architecture An architecture diagram generated by Archify. Client Ingress · get(K) / put(K, V) · Architecture component Client Ingress get(K) / put(K, V) ReentrantLock · atomic mutex guard · Architecture component · Thread-Safe ReentrantLock atomic mutex guard Thread-Safe HashMap<K, Node> · O(1) pointer index · LRUCache Memory Boundary · O(1) Lookup HashMap<K, Node> O(1) pointer index O(1) Lookup Dummy Head · MRU sentinel (-1, -1) · LRUCache Memory Boundary › Doubly Linked List (Ordering) Dummy Head MRU sentinel (-1, -1) Node A (MRU) · key: 1 · val: 10 · LRUCache Memory Boundary › Doubly Linked List (Ordering) Node A (MRU) key: 1 · val: 10 Node B (LRU) · key: 2 · val: 20 · LRUCache Memory Boundary › Doubly Linked List (Ordering) Node B (LRU) key: 2 · val: 20 Dummy Tail · LRU sentinel (-1, -1) · LRUCache Memory Boundary › Doubly Linked List (Ordering) Dummy Tail LRU sentinel (-1, -1) Eviction Engine · drop tail.prev on cap · LRUCache Memory Boundary · Auto Evict Eviction Engine drop tail.prev on cap Auto Evict lock() / unlock() find Node moveToHead() direct ref direct ref prev/next prev/next prev/next removeTail() map.remove() LRUCache Memory Boundary Doubly Linked List (Ordering) Legend Backend Database Cloud Security External