diff --git a/backend/api/core/Redis.py b/backend/api/core/Redis.py index 61d87724..456f9cb8 100644 --- a/backend/api/core/Redis.py +++ b/backend/api/core/Redis.py @@ -4,7 +4,7 @@ from api.core.Gzip import gzip_zip, gzip_unzip from config.main import config -async def get_redis_info(redis, key, fun, expire = 0, without_gzip=False): +async def get_redis_info_async(redis, key, fun, expire = 0, without_gzip=False): info = None if not config.DEBUG_MODE and redis: try: @@ -27,3 +27,24 @@ async def get_redis_info(redis, key, fun, expire = 0, without_gzip=False): if expire > 0: redis.expire(key, expire) return info + +def get_redis_info(redis, key, fun, expire = 0, without_gzip=False): + info = None + if not config.DEBUG_MODE and redis: + try: + if without_gzip: + info = json.loads(redis.get(key)) + else: + info = json.loads(gzip_unzip(redis.get(key))) + except Exception: + info = None + if info is None: + info = fun() + if not config.DEBUG_MODE and redis and info is not None: + if without_gzip: + redis.set(key, json.dumps(info)) + else: + redis.set(key, gzip_zip(json.dumps(info))) + if expire > 0: + redis.expire(key, expire) + return info \ No newline at end of file diff --git a/backend/api/routes/colg.py b/backend/api/routes/colg.py index 05b11651..04632831 100644 --- a/backend/api/routes/colg.py +++ b/backend/api/routes/colg.py @@ -6,7 +6,7 @@ from api.core.Gzip import register_gzip_request import json from fastapi import APIRouter, Path, Query, Depends from api.core.Response import response -from api.core.Redis import get_redis_info +from api.core.Redis import get_redis_info,get_redis_info_async from api.dp import RedisDep from typing import Annotated import requests @@ -187,5 +187,5 @@ async def get_official_gold(redis: RedisDep) -> Response[list[OfficialGold]]: print(e) return response(data=[]) # 设置半小时过期一次 - data = await get_redis_info(redis, key, get_data, 30 * 60) + data = await get_redis_info_async(redis, key, get_data, 30 * 60) return response(data=data)