You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.8 KiB
65 lines
1.8 KiB
import aioredis
|
|
from module_admin.service.dict_service import DictDataService
|
|
from module_admin.service.config_service import ConfigService
|
|
from config.env import RedisConfig
|
|
from config.database import SessionLocal
|
|
from utils.log_util import logger
|
|
|
|
|
|
class RedisUtil:
|
|
"""
|
|
Redis相关方法
|
|
"""
|
|
|
|
@classmethod
|
|
async def create_redis_pool(cls) -> aioredis.Redis:
|
|
"""
|
|
应用启动时初始化redis连接
|
|
:return: Redis连接对象
|
|
"""
|
|
logger.info("开始连接redis...")
|
|
redis = await aioredis.from_url(
|
|
url=f"redis://{RedisConfig.redis_host}",
|
|
port=RedisConfig.redis_port,
|
|
username=RedisConfig.redis_username,
|
|
password=RedisConfig.redis_password,
|
|
db=RedisConfig.redis_database,
|
|
encoding="utf-8",
|
|
decode_responses=True
|
|
)
|
|
logger.info("redis连接成功")
|
|
return redis
|
|
|
|
@classmethod
|
|
async def close_redis_pool(cls, app):
|
|
"""
|
|
应用关闭时关闭redis连接
|
|
:param app: fastapi对象
|
|
:return:
|
|
"""
|
|
await app.state.redis.close()
|
|
logger.info("关闭redis连接成功")
|
|
|
|
@classmethod
|
|
async def init_sys_dict(cls, redis):
|
|
"""
|
|
应用启动时缓存字典表
|
|
:param redis: redis对象
|
|
:return:
|
|
"""
|
|
session = SessionLocal()
|
|
await DictDataService.init_cache_sys_dict_services(session, redis)
|
|
|
|
session.close()
|
|
|
|
@classmethod
|
|
async def init_sys_config(cls, redis):
|
|
"""
|
|
应用启动时缓存参数配置表
|
|
:param redis: redis对象
|
|
:return:
|
|
"""
|
|
session = SessionLocal()
|
|
await ConfigService.init_cache_sys_config_services(session, redis)
|
|
|
|
session.close()
|
|
|