pottery
Redis for Humans.
What it is and what it does
Pottery wraps Redis with Python standard-library collection interfaces—RedisDict, RedisSet, RedisList, RedisDeque, RedisCounter, RedisSimpleQueue—so you can treat Redis as if it were a local Python dict or set. Instead of learning Redis commands, you use the same syntax you already know from Python's built-in collections. The package is designed for scenarios where you need persistent, shared storage across machines or processes, or where you want your data to survive application restarts.
Under the hood, Pottery serializes your data to JSON and stores it in Redis, handling the translation between Python objects and Redis operations. It supports async patterns via AIORedlock and includes utilities like Bloom filters, HyperLogLogs, and distributed locking. The package has been battle-tested in production at scale and is actively maintained, supporting Python 3.9 through 3.13.
Use it for:
- Implement a distributed cache or session store shared across multiple application instances or microservices.
- Build a multi-producer, multi-consumer work queue that persists across application crashes using RedisSimpleQueue.
- Use RedisDict or RedisSet as a persistent, shared data structure for configuration or feature flags.
- Implement distributed locking or synchronization patterns with Redlock for coordinating work across processes.
- Count occurrences or track metrics across a distributed system using RedisCounter.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Pottery provides Python dict, set, list, deque, queue, and counter interfaces backed by Redis, letting you use familiar Python collection syntax to read and write data persisted in Redis.
Yes, if you need a straightforward way to use Redis as a persistent, shared data store and prefer Python collection syntax over raw Redis commands. The low install friction, active maintenance, and lack of known vulnerabilities make it a safe choice. The main caveat is that all values must be JSON-serializable, and index-based access on RedisList is slow; for those constraints, it's a solid fit for caching, queues, and distributed state.
Install
pottery on PyPI
pip
pip install potteryuv
uv add potterypoetry
poetry add potteryInstalling pottery
Before you install
Low install friction with only 3 runtime dependencies (redis, mmh3, typing_extensions). Actively maintained with a recent release on 2025-03-21 and ongoing commits; the repository is not archived and has 1246 stars.
Quickstart
from redis import Redis
from pottery import RedisDict
redis = Redis.from_url('redis://localhost:6379/1')
tel = RedisDict({'jack': 4098}, redis=redis, key='tel')
tel['guido'] = 4127
print(tel['jack'])
Requires a running Redis server accessible at the connection URL; all keys and values must be JSON serializable.
Verify before relying
- Whether the package is suitable for high-throughput or latency-sensitive workloads given Redis round-trip overhead
- Performance characteristics of index-based access on RedisList (described as O(n) in the excerpt)
- Whether all advertised features (Redlock, AIORedlock, NextID, redis_cache, CachedOrderedDict, Bloom filters, HyperLogLogs, ContextTimer) are production-ready
Package facts
| License | not declared (unclear) |
| Python support | supports the current Python release (<4,>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — redis, mmh3, typing_extensions |
| Maintenance | actively maintained — 511 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 557,205/month — #6,012 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pottery-3.0.1-py3-none-any.whl
Keywords: Redis, client, persistent, storage
Tags
More Utilities packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
charset-normalizerDetects and normalizes text encoding from…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
PygmentsPygments is a syntax highlighter that colorizes…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
python-redis-lockProvides a Redis-backed distributed lock with a…
permissive · top 5,000 on PyPI
arqarq provides a job queue system for Python that…
permissive · top 5,000 on PyPI
channels-redisProvides Redis-backed channel layers for Django…
permissive · top 5,000 on PyPI
aioredlockImplements the Redlock distributed lock…
permissive · top 15,000 on PyPI
redisPython client library for connecting to and…
permissive · top 1,000 on PyPI
redlock-pyImplements Redis-based distributed locks using…
permissive · top 15,000 on PyPI
prefect-redisIntegrates Prefect workflow orchestration with…
permissive · top 15,000 on PyPI
redlockImplements the RedLock algorithm to provide…
permissive · top 15,000 on PyPI
queuelibQueuelib provides in-memory and disk-persisted…
permissive · top 5,000 on PyPI
django-redis-sessionsProvides a Redis-backed session storage backend…
permissive · top 15,000 on PyPI