This commit is contained in:
2026-03-09 19:02:33 +08:00
parent b1a87fdb46
commit babb4eaa23
2 changed files with 24 additions and 3 deletions
+22 -1
View File
@@ -4,7 +4,7 @@ from api.core.Gzip import gzip_zip, gzip_unzip
from config.main import config 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 info = None
if not config.DEBUG_MODE and redis: if not config.DEBUG_MODE and redis:
try: try:
@@ -27,3 +27,24 @@ async def get_redis_info(redis, key, fun, expire = 0, without_gzip=False):
if expire > 0: if expire > 0:
redis.expire(key, expire) redis.expire(key, expire)
return info 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
+2 -2
View File
@@ -6,7 +6,7 @@ from api.core.Gzip import register_gzip_request
import json import json
from fastapi import APIRouter, Path, Query, Depends from fastapi import APIRouter, Path, Query, Depends
from api.core.Response import response 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 api.dp import RedisDep
from typing import Annotated from typing import Annotated
import requests import requests
@@ -187,5 +187,5 @@ async def get_official_gold(redis: RedisDep) -> Response[list[OfficialGold]]:
print(e) print(e)
return response(data=[]) 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) return response(data=data)