Use redis.asyncio instead of thread
Fixes #278 (closed)
Uses redis.asyncio instead of the client based on a background thread.
It turns out that the background thread was polling pretty heavily, which was causing the slowdown making the tests much slower than non-Redis and causing the CPU-intensive tests (e.g. hashing) to fail.
In addition, close the race-condition where events could be published between the time we check the database and the time we subscribe to Redis.