Your IP : 216.73.216.213


Current Path : /opt/alt/python35/share/doc/alt-python35-aioredis/examples/
Upload File :
Current File : //opt/alt/python35/share/doc/alt-python35-aioredis/examples/pipeline.py

import asyncio
import aioredis


async def main():
    redis = await aioredis.create_redis(
        'redis://localhost')

    # No pipelining;
    async def wait_each_command():
        val = await redis.get('foo')    # wait until `val` is available
        cnt = await redis.incr('bar')   # wait until `cnt` is available
        return val, cnt

    # Sending multiple commands and then gathering results
    async def pipelined():
        fut1 = redis.get('foo')      # issue command and return future
        fut2 = redis.incr('bar')     # issue command and return future
        # block until results are available
        val, cnt = await asyncio.gather(fut1, fut2)
        return val, cnt

    # Explicit pipeline
    async def explicit_pipeline():
        pipe = redis.pipeline()
        fut1 = pipe.get('foo')
        fut2 = pipe.incr('bar')
        result = await pipe.execute()
        val, cnt = await asyncio.gather(fut1, fut2)
        assert result == [val, cnt]
        return val, cnt

    res = await wait_each_command()
    print(res)
    res = await pipelined()
    print(res)
    res = await explicit_pipeline()
    print(res)

    redis.close()
    await redis.wait_closed()


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())