// the find
brainix/pottery
Redis for humans. 🌎🌍🌏
Pottery wraps Redis data structures behind Python's native collection interfaces — dict, set, list, deque, Counter — so you interact with Redis without learning its command set. It also ships a Redlock implementation, a distributed ID generator, a function cache decorator, Bloom filters, and HyperLogLogs. The target user is a Python developer who already knows Redis is the right tool but finds the raw redis-py API tedious.
The Redlock implementation is serious: it supports multiple masters, configurable auto-release times, blocking/non-blocking acquire with timeouts, and an asyncio variant (AIORedlock) — not a toy single-node lock. The API parity with Python builtins is thorough enough that the README can mostly just show standard dict/set/list examples. Bloom filter configuration is honest about the tradeoff: you specify expected element count and false positive rate, and the library sizes itself accordingly. Test coverage is broad and the README is doctest-verified, so the examples actually run.
The JSON-serialization-only constraint on keys and values is a real limitation that will bite you the moment you try to store anything beyond primitives — no datetime, no UUID, no custom objects without manual serialization. CachedOrderedDict is awkwardly designed: you instantiate it with your keys, then separately check misses and fill them in, which is a two-step dance that's easy to get wrong under concurrent access. redis_cache() growing unbounded with no LRU eviction is a footgun — the docs warn you, but defaulting to unbounded cache in a library that explicitly targets production use is a strange choice. The 1,244 stars and 67 forks after what appears to be years of development suggests limited adoption, which means you're taking on maintenance risk with a small community behind it.