The cache expired at noon and the database fell over at 12:00:01. A lock, a two-tier expiry, jittered TTLs, and versioned keys — in that order of importance.
Counting failures in a PHP object means each of fifty workers keeps its own count and opens independently, which is fifty times more slow calls than intended. Using…
Caching what a query returned saves the round trip and leaves the hydration, the mapping and the aggregation to happen on every request anyway. Profiling usually shows the…
BLPOP is atomic and destructive, so a consumer that crashes between popping and finishing has lost the message with no record that it existed. The * generates an…
A thousand cache entries written during a deploy with the same TTL expire in the same second, and the stampede recurs on a fixed interval forever. Deriving the…
SCAN is the safe replacement for KEYS because each call does bounded work, and the pattern is applied after the keys are fetched — so scanning a million…
5.0 shipped in October with a log-structured type and consumer groups. A list has no acknowledgement, which is why a crashed consumer loses the message.