Benchmark

During test benchmarks/comparison.py ran on a virtual machine (Ubuntu, 4G RAM and 2 CPUs) with hiredis installed.

local redis server

num of query/time aredis(asyncio) aredis(uvloop) aioredis(asyncio) aioredis(uvloop) asyncio_redis(asyncio) asyncio_redis(uvloop) redis-py
100 0.0190 0.01802 0.0400 0.01989 0.0391 0.0326 0.0111
1000 0.0917 0.05998 0.1237 0.05866 0.1838 0.1397 0.0396
10000 1.0614 0.66423 1.2277 0.62957 1.9061 1.5464 0.3944
100000 10.228 6.13821 10.400 6.06872 19.982 15.252 3.6307

redis server in local area network

Only run with uvloop, or it will be too slow. Although synchronous code may perform better than in asynchronous, asynchronous won’t block other code.

num of query/time aredis(uvloop) aioredis(uvloop) asyncio_redis(uvloop) redis-py
100 0.06998 0.06019 0.1971 0.0556
1000 0.66197 0.61183 1.9330 0.7909
10000 5.81604 6.87364 19.186 7.1334
100000 58.4715 60.9220 189.06 58.979

test results may differ depending on your workstation and networking hardware (you may run the benchmark yourself to determine which one is the most suitable for you)

Advantages

  1. hiredis is an optional dependency for aredis.
  2. API of aredis was mostly ported from redis-py, which is easy to use. It lets you easily port existing code to work with asyncio.
  3. aredis has a decent efficiency (please run benchmarks/comparison.py to see which async redis client is suitable for you).
  4. uvloop event loop is supported by aredis, it can double the speed of your async code.