What problem does it solve? Choosing and configuring an in-memory cache in Go involves subtle decisions — eviction algorithm selection, TTL and janitor setup, loader error handling, and capacity sizing — where common mistakes (forgetting WithJanitor, calling SetMissing without a missing cache, combining WithoutLocking with WithJanitor) cause runtime panics or silently stale data. ## Core Features & Use Cases - Eviction Algorithm Selection: Guidance and decision trees for all 9 samber/hot algorithms (LRU, LFU, TinyLFU, W-TinyLFU, S3FIFO, ARC, TwoQueue, SIEVE, FIFO) matched to access patterns. - Production Patterns: Loader chains with singleflight deduplication, stale-while-revalidate, sharding for lock contention, missing-key (negative) caching, copy-on-read/write, warm-up, and Prometheus monitoring. - Use Case: A Go service caches user lookups with a read-through loader, 5-minute TTL with jitter, 16 shards to reduce mutex contention, and Prometheus metrics alerting when hit rate drops below 80%. ## Quick Start Set up a samber/hot cache in my Go service with W-TinyLFU, a 5-minute TTL, a database loader, and Prometheus metrics.