Introduction to Async-Redis
Async-Redis is a powerful and efficient asynchronous library for interacting with Redis databases in Python applications. By leveraging async and await syntax, it enables high-performance, non-blocking operations, making it ideal for modern applications requiring speed and scalability.
Essential APIs and Code Snippets
Connecting to Redis
import asyncio
import aioredis
async def main():
redis = await aioredis.create_redis_pool('redis://localhost')
await redis.set('my-key', 'value')
value = await redis.get('my-key', encoding='utf-8')
print(value)
redis.close()
await redis.wait_closed()
asyncio.run(main())
Basic Operations
SET and GET
async def set_get(redis):
await redis.set('key', 'value')
value = await redis.get('key', encoding='utf-8')
return value
asyncio.run(set_get(redis))
DELETE
async def delete(redis):
await redis.delete('key')
exists = await redis.exists('key')
return exists
asyncio.run(delete(redis))
Advanced Data Structures
Lists
async def list_operations(redis):
await redis.lpush('mylist', 'element')
elements = await redis.lrange('mylist', 0, -1)
return elements
asyncio.run(list_operations(redis))
Hashes
async def hash_operations(redis):
await redis.hset('myhash', 'field1', 'value1')
field_value = await redis.hget('myhash', 'field1', encoding='utf-8')
return field_value
asyncio.run(hash_operations(redis))
Sets
async def set_operations(redis):
await redis.sadd('myset', 'member1')
members = await redis.smembers('myset')
return members
asyncio.run(set_operations(redis))
Using Transactions
async def transaction(redis):
tr = redis.multi_exec()
tr.set('key', 'value')
tr.increment('key')
result = await tr.execute()
return result
asyncio.run(transaction(redis))
Publish/Subscribe Messaging
async def pubsub(redis):
channel, = await redis.subscribe('channel')
await redis.publish('channel', 'message')
msg = await channel.get(encoding='utf-8')
return msg
asyncio.run(pubsub(redis))
Complete App Example
import asyncio
import aioredis
async def main():
redis = await aioredis.create_redis_pool('redis://localhost')
# Set and Get example
await redis.set('example-key', 'example-value')
value = await redis.get('example-key', encoding='utf-8')
print(f'SET and GET: key: example-key, value: {value}')
# List operation
await redis.rpush('example-list', 'first-element')
elements = await redis.lrange('example-list', 0, -1, encoding='utf-8')
print(f'List elements: {elements}')
# Hash operation
await redis.hset('example-hash', 'field1', 'val1')
hash_value = await redis.hget('example-hash', 'field1', encoding='utf-8')
print(f'Hash value: field1: {hash_value}')
# Set operation
await redis.sadd('example-set', 'member1')
set_members = await redis.smembers('example-set', encoding='utf-8')
print(f'Set members: {set_members}')
redis.close()
await redis.wait_closed()
asyncio.run(main())
By utilizing async-redis, developers can interact with Redis databases efficiently without blocking other I/O operations, adhering to modern application performance requirements.
Hash: 3b776ccc42dced411bb210bc2457283645c36370abe281cb78f7e7b9331c62ea