redis.py 773 B

1234567891011121314151617181920212223242526272829
  1. from datetime import timedelta
  2. from app.models import CustomModel
  3. from redis.asyncio import Redis
  4. redis_client: Redis = None # type: ignore
  5. class RedisData(CustomModel):
  6. key: bytes | str
  7. value: bytes | str
  8. ttl: int | timedelta | None = None
  9. async def set_redis_key(redis_data: RedisData, *, is_transaction: bool = False) -> None:
  10. async with redis_client.pipeline(transaction=is_transaction) as pipe:
  11. await pipe.set(redis_data.key, redis_data.value)
  12. if redis_data.ttl:
  13. await pipe.expire(redis_data.key, redis_data.ttl)
  14. await pipe.execute()
  15. async def get_by_key(key: str) -> str | None:
  16. return await redis_client.get(key)
  17. async def delete_by_key(key: str) -> None:
  18. return await redis_client.delete(key)