Examples of aioredis usage

Below is a list of examples from aioredis/examples (see for more).

Every example is a correct python program that can be executed.

Python 3.5 examples

Low-level connection usage example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    async def go():
        conn = await aioredis.create_connection(
            ('localhost', 6379), encoding='utf-8')

        ok = await conn.execute('set', 'my-key', 'some value')
        assert ok == 'OK', ok

        str_value = await conn.execute('get', 'my-key')
        raw_value = await conn.execute('get', 'my-key', encoding=None)
        assert str_value == 'some value'
        assert raw_value == b'some value'

        print('str value:', str_value)
        print('raw value:', raw_value)

        # optionally close connection
        conn.close()
    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Connections pool example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    async def go():
        pool = await aioredis.create_pool(
            ('localhost', 6379),
            minsize=5, maxsize=10)
        with await pool as redis:    # high-level redis API instance
            await redis.set('my-key', 'value')
            val = await redis.get('my-key')
        print('raw value:', val)
        pool.close()
        await pool.wait_closed()    # closing all open connections

    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Commands example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    async def go():
        redis = await aioredis.create_redis(
            ('localhost', 6379))
        await redis.set('my-key', 'value')
        val = await redis.get('my-key')
        print(val)

        # gracefully closing underlying connection
        redis.close()
        await redis.wait_closed()
    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Transaction example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    async def go():
        redis = await aioredis.create_redis(
            ('localhost', 6379))
        await redis.delete('foo', 'bar')
        tr = redis.multi_exec()
        fut1 = tr.incr('foo')
        fut2 = tr.incr('bar')
        res = await tr.execute()
        res2 = await asyncio.gather(fut1, fut2)
        print(res)
        assert res == res2

        redis.close()
        await redis.wait_closed()

    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Pub/Sub example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    async def reader(ch):
        while (await ch.wait_message()):
            msg = await ch.get_json()
            print("Got Message:", msg)

    async def go():
        pub = await aioredis.create_redis(
            ('localhost', 6379))
        sub = await aioredis.create_redis(
            ('localhost', 6379))
        res = await sub.subscribe('chan:1')
        ch1 = res[0]

        tsk = asyncio.ensure_future(reader(ch1))

        res = await pub.publish_json('chan:1', ["Hello", "world"])
        assert res == 1

        await sub.unsubscribe('chan:1')
        await tsk
        sub.close()
        pub.close()

    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Scan command example

get source code

import asyncio
import aioredis


def main():
    """Scan command example."""
    loop = asyncio.get_event_loop()

    async def go():
        redis = await aioredis.create_redis(
            ('localhost', 6379))

        await redis.mset('key:1', 'value1', 'key:2', 'value2')
        cur = b'0'  # set initial cursor to 0
        while cur:
            cur, keys = await redis.scan(cur, match='key:*')
            print("Iteration results:", keys)

        redis.close()
        await redis.wait_closed()
    loop.run_until_complete(go())


if __name__ == '__main__':
    import os
    if 'redis_version:2.6' not in os.environ.get('REDIS_VERSION', ''):
        main()

Python 3.4 examples (using yield from)

Located in aioredis/examples/py34

Low-level connection usage example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    @asyncio.coroutine
    def go():
        conn = yield from aioredis.create_connection(
            ('localhost', 6379), encoding='utf-8')

        ok = yield from conn.execute('set', 'my-key', 'some value')
        assert ok == 'OK', ok

        str_value = yield from conn.execute('get', 'my-key')
        raw_value = yield from conn.execute('get', 'my-key', encoding=None)
        assert str_value == 'some value'
        assert raw_value == b'some value'

        print('str value:', str_value)
        print('raw value:', raw_value)

        # optionally close connection
        conn.close()
    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Connections pool example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    @asyncio.coroutine
    def go():
        pool = yield from aioredis.create_pool(
            ('localhost', 6379),
            minsize=5, maxsize=10)
        with (yield from pool) as redis:    # high-level redis API instance
            yield from redis.set('my-key', 'value')
            val = yield from redis.get('my-key')
        print('raw value:', val)
        pool.close()
        yield from pool.wait_closed()    # closing all open connections

    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Commands example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    @asyncio.coroutine
    def go():
        redis = yield from aioredis.create_redis(
            ('localhost', 6379))
        yield from redis.set('my-key', 'value')
        val = yield from redis.get('my-key')
        print(val)

        # optinally closing underlying connection
        redis.close()
    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Transaction example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    @asyncio.coroutine
    def go():
        redis = yield from aioredis.create_redis(
            ('localhost', 6379))
        yield from redis.delete('foo', 'bar')
        tr = redis.multi_exec()
        fut1 = tr.incr('foo')
        fut2 = tr.incr('bar')
        res = yield from tr.execute()
        res2 = yield from asyncio.gather(fut1, fut2)
        print(res)
        assert res == res2
        redis.close()
        yield from redis.wait_closed()

    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Pub/Sub example

get source code

import asyncio
import aioredis


def main():
    loop = asyncio.get_event_loop()

    @asyncio.coroutine
    def reader(ch):
        while (yield from ch.wait_message()):
            msg = yield from ch.get_json()
            print("Got Message:", msg)

    @asyncio.coroutine
    def go():
        pub = yield from aioredis.create_redis(
            ('localhost', 6379))
        sub = yield from aioredis.create_redis(
            ('localhost', 6379))
        res = yield from sub.subscribe('chan:1')
        ch1 = res[0]

        tsk = asyncio.async(reader(ch1))

        res = yield from pub.publish_json('chan:1', ["Hello", "world"])
        assert res == 1

        yield from sub.unsubscribe('chan:1')
        yield from tsk
        sub.close()
        pub.close()

    loop.run_until_complete(go())


if __name__ == '__main__':
    main()

Scan command example

get source code

import asyncio
import aioredis


def main():
    """Scan command example."""
    loop = asyncio.get_event_loop()

    @asyncio.coroutine
    def go():
        redis = yield from aioredis.create_redis(
            ('localhost', 6379))

        yield from redis.mset('key:1', 'value1', 'key:2', 'value2')
        cur = b'0'  # set initial cursor to 0
        while cur:
            cur, keys = yield from redis.scan(cur, match='key:*')
            print("Iteration results:", keys)

        redis.close()
        yield from redis.wait_closed()
    loop.run_until_complete(go())


if __name__ == '__main__':
    import os
    if 'redis_version:2.6' not in os.environ.get('REDIS_VERSION', ''):
        main()