redis.py 933 B

12345678910111213141516171819202122232425262728
  1. import aioredis
  2. from typing import Any, Optional
  3. import time
  4. class RedisSession:
  5. def __init__(self, redis_url: str, session_expiry: int = 3600):
  6. self.redis_url = redis_url
  7. self.session_expiry = session_expiry
  8. self.redis = None
  9. async def connect(self):
  10. self.redis = await aioredis.create_redis_pool(self.redis_url)
  11. async def disconnect(self):
  12. if self.redis:
  13. self.redis.close()
  14. await self.redis.wait_closed()
  15. async def get(self, key: str) -> Optional[Any]:
  16. value = await self.redis.get(key)
  17. return value.decode("utf-8") if value else None
  18. async def set(self, key: str, value: Any, expiry: int = None):
  19. expiry = expiry or self.session_expiry
  20. await self.redis.set(key, value, ex=expiry)
  21. async def delete(self, key: str):
  22. await self.redis.delete(key)