Work
Live2026

YokedCache

One async API, five backends, and tags that really invalidate.

YokedCache: One async API, five backends, and tags that really invalidate.

A Python caching library that came out of Project Yoked and outlived it. One async API behaves the same across in-process memory, Redis, Memcached, disk and SQLite. Tag a key, invalidate the tag, done. It's in the backend of nearly everything I ship now, including the client work.

I was writing a cache layer inside Project Yoked and kept reading other people's caching libraries wondering why something this simple needed to be that complicated. So I pulled mine out, rebuilt it properly, and named it after the project it came from. Yoked, as in jacked.

One async-first API, identical across memory, Redis, Memcached, disk and SQLite. The memory backend needs no setup at all, so tests run without any infrastructure standing behind them.

Past get and set it does the parts most libraries skip. Invalidation by tag or by pattern instead of only by key, so there's no hand-rolled cache-busting logic anywhere. SQLAlchemy helpers. Optional HTTP caching middleware for Starlette. Real observability through Prometheus, StatsD and OpenTelemetry.

It's the one library I reach for without thinking about it. EagleChair runs on it, Ourlee runs on it.

What it does

  • One API across memory, Redis, Memcached, disk and SQLite
  • Invalidate by tag or by pattern, not just by key
  • Memory backend needs no setup, so tests run with no infrastructure
  • Prometheus, StatsD and OpenTelemetry built in
  • Optional Starlette HTTP caching middleware