Metadata-Version: 2.1
Name: async-redis-objects
Version: 0.3.1
Summary: Object oriented interface to aioredis.
Home-page: https://github.com/adam-douglass/async-redis-objects/
Author: Adam Douglass
Author-email: douglass@malloc.ca
License: UNKNOWN
Keywords: utility redis oop object-oriented
Platform: UNKNOWN
Description-Content-Type: text/markdown
Requires-Dist: aioredis
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'docs'
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: pytest-asyncio (!=0.11) ; extra == 'test'
Requires-Dist: coverage ; extra == 'test'

[![Actions Status](https://github.com/adam-douglass/async-redis-objects/workflows/unittests/badge.svg)](https://github.com/adam-douglass/draughts/actions)
[![codecov](https://codecov.io/gh/adam-douglass/async-redis-objects/branch/main/graph/badge.svg?token=6n3DbzkOwk)](https://codecov.io/gh/adam-douglass/async-redis-objects)

Async Redis Objects
===================

Some object orient wrappers around the redis interface provided by [`aioredis`](https://github.com/aio-libs/aioredis).

Notes
-----

 - Included:
   - hash table
   - queue (list)
   - priority queue (sorted set)
   - locks (keys)
 - Includes python implementation with matching interface for mocking. \
   `from async_redis_objects.mocks import ObjectClient`
 - tested on pypy and CPython 3.6 to 3.9
 - [API documentation on read the docs](https://async-redis-objects.readthedocs.io)

Example
-------

```python
import aioredis
import asyncio
from async_redis_objects import ObjectClient


async def main():
    # Connect with aioredis as normal
    redis = aioredis.Redis(await aioredis.pool.create_pool(address='redis://redis:6379', db=3, minsize=5))

    # Make an object client object with your redis object
    objects = ObjectClient(redis)

    # Access a hash table in redis
    table = objects.hash('hash-table-key')
    await table.set('name', 'Hello World')

    # Access a queue
    queue = objects.queue('queue-name')
    await queue.push(await table.get('name'))
    await queue.push(100000)

    # Access a priority queue
    pq = objects.priority_queue('other-queue-name')
    await pq.push({'name': 'same json serializable object'}, priority=100)
    await pq.push(await queue.pop(), priority=101)
    print(await pq.pop())  # Print Hello World

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
```


