A simple redis-like in pure python3, fully asyncio/thread/process compliant !
- asyncio compliant
- client Sync (Client) & Async (AClient)
- very quick
classicscommands : get/set/delete/keys & incr/decr
setscommands : sadd/srem
queuecommands : rpush/lpush/rpop/lpop
pubsubcommands : subscribe/unsubscribe/get_event & publish
cachecommands : setex
- exchange everything that is pickable (except None)
- raise real python exception in client side
- minimal code size
- works well on GAE Standard (2nd generation/py37)
- unittests are autonomous (it runs a server)
- just in-memory !
Redis is great, but overbloated for my needs. Redys is simple, you can start the server side in an asyncio loop, and clients can interact with a simple in-memory db. Really useful when clients are in async/threads/process(workers)/multi-hosts world, to share a unique source of truth.
- The sync client (
Client) use threads, so it can't live in the same loop as the server (
Server). It's better to use it in another thread or process.
- The async client (
AClient) can live in the same loop as the server (
Server), but don't forget to await each methods (which are coroutines in async version)
- Not fully/concurrency tested. Use at own risk ;-)
- See tests for examples