dict-server/app/core/redis.py

32 lines
896 B
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import redis.asyncio as redis
from typing import AsyncGenerator, Optional
# 全局 Redis 客户端
redis_client: Optional[redis.Redis] = None
# 初始化 Redis应用启动时调用
async def init_redis():
global redis_client
if redis_client is None:
redis_client = await redis.Redis(
host="127.0.0.1",
port=6379,
decode_responses=True, # 返回 str 而不是 Bytes
)
await redis_client.ping()
async def close_redis():
global redis_client
if redis_client:
try:
await redis_client.close()
except Exception:
pass
redis_client = None
# FastAPI 依赖注入用的获取方法
async def get_redis() -> AsyncGenerator[redis.Redis, None]:
global redis_client
if redis_client is None:
await init_redis() # 懒加载,避免 NoneType
yield redis_client