diff --git a/README.md b/README.md index 9229fd1..d14d9ae 100644 --- a/README.md +++ b/README.md @@ -7,34 +7,34 @@ datastore trio (`redis` / `psql` / `mysql`), a sibling of the `mongo` lib. > **Import name ≠ repo name.** The repo/distribution is **`redis`**, but you import > **`redis_store`** — the driver package owns the `redis` import namespace, so the lib > can't also be `redis`. Install resolves `redis.git`; code does -> `from redis_store import RedisStore`. +> `from redis_store import RedisDB`. ## Install `requirements.txt`: ``` -redis_store @ git+ssh://git@git.rethinkstudios.io/rethink-public/redis.git@v0.1.0 +redis_store @ git+ssh://git@git.rethinkstudios.io/rethink-public/redis.git@v0.1.1 ``` Direct: ```bash -pip install "redis_store @ git+ssh://git@git.rethinkstudios.io/rethink-public/redis.git@v0.1.0" +pip install "redis_store @ git+ssh://git@git.rethinkstudios.io/rethink-public/redis.git@v0.1.1" ``` Pulls `redis>=5` (redis-py, which ships the asyncio client — **not** the dead standalone `aioredis`). -Drop the `@v0.1.0` suffix from the line above to install the latest unpinned. +Drop the `@v0.1.1` suffix from the line above to install the latest unpinned. ## Usage ```python -from redis_store import RedisStore +from redis_store import RedisDB # construction is sync and opens no socket; connect() pings to fail loud on bad config -kv = await RedisStore(host="localhost", port=6379, db=0, password=None).connect() +kv = await RedisDB(host="localhost", port=6379, db=0, password=None).connect() await kv.set("user:1:name", "ada", ex=3600) # ex = ttl seconds (optional) name = await kv.get("user:1:name") # "ada" (None if absent) @@ -50,7 +50,7 @@ await kv.close() # on shutdown Context-manager form: ```python -async with RedisStore(host="localhost") as kv: +async with RedisDB(host="localhost") as kv: await kv.incr("hits") ``` diff --git a/pyproject.toml b/pyproject.toml index cc5dcd5..eb6ab9b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "redis_store" -version = "0.1.0" +version = "0.1.1" description = "async redis wrapper over redis-py asyncio with a raw escape hatch, fail-loud and config-free" requires-python = ">=3.10" dependencies = [ diff --git a/src/redis_store/__init__.py b/src/redis_store/__init__.py index 640ca30..55d7233 100644 --- a/src/redis_store/__init__.py +++ b/src/redis_store/__init__.py @@ -1,3 +1,3 @@ -from .redis_store import RedisStore +from .redis_store import RedisDB -__all__ = ["RedisStore"] +__all__ = ["RedisDB"] diff --git a/src/redis_store/redis_store.py b/src/redis_store/redis_store.py index cb5ec5d..6f52ac8 100644 --- a/src/redis_store/redis_store.py +++ b/src/redis_store/redis_store.py @@ -2,14 +2,14 @@ async redis wrapper over redis-py's asyncio client object pattern (one client per process), attach to the app: - from redis_store import RedisStore - app.kv = await RedisStore(host="localhost", port=6379, db=0).connect() + from redis_store import RedisDB + app.kv = await RedisDB(host="localhost", port=6379, db=0).connect() await app.kv.set("user:1:name", "ada", ex=3600) name = await app.kv.get("user:1:name") # "ada" await app.kv.close() # on shutdown context manager: - async with RedisStore(host="localhost") as kv: + async with RedisDB(host="localhost") as kv: await kv.incr("hits") lifecycle: @@ -45,7 +45,7 @@ from redis.exceptions import RedisError log = logging.getLogger(__name__) -class RedisStore: +class RedisDB: """async redis wrapper; one client per process, attach as app.kv""" def __init__( @@ -84,11 +84,11 @@ class RedisStore: ) self._client = redis.Redis(connection_pool=self._pool) - async def connect(self) -> "RedisStore": + async def connect(self) -> "RedisDB": """open + validate the connection with a ping; fail loud on bad config returns self so callers can write - `kv = await RedisStore(...).connect()`. + `kv = await RedisDB(...).connect()`. """ try: await self._client.ping() @@ -106,7 +106,7 @@ class RedisStore: log.exception("redis.close()") raise - async def __aenter__(self) -> "RedisStore": + async def __aenter__(self) -> "RedisDB": return await self.connect() async def __aexit__(self, exc_type, exc, tb) -> None: