cache.py 868 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. try:
  2. from redis import asyncio as aioredis
  3. except ImportError:
  4. import aioredis
  5. from fastapi import FastAPI
  6. import redis
  7. from core.config import settings
  8. def registerRedis(app: FastAPI) -> None:
  9. """
  10. 把redis挂载到app对象上面, 异步redis
  11. :param app:
  12. :return:
  13. """
  14. @app.on_event('startup')
  15. async def startup_event():
  16. """
  17. 获取链接
  18. :return:
  19. """
  20. app.state.redis = await aioredis.from_url(settings.getRedisURL())
  21. @app.on_event('shutdown')
  22. async def shutdown_event():
  23. """
  24. 关闭
  25. :return:
  26. """
  27. await app.state.redis.close()
  28. def get_redis() -> redis.Redis:
  29. """
  30. get_redis 同步的redis
  31. :return redis.Redis
  32. """
  33. pool = redis.ConnectionPool.from_url(settings.getRedisURL())
  34. return redis.Redis(connection_pool=pool)