diff --git a/AssetManager.Infrastructure/Services/MarketDataService.cs b/AssetManager.Infrastructure/Services/MarketDataService.cs index 5231d0c..7e03aa2 100755 --- a/AssetManager.Infrastructure/Services/MarketDataService.cs +++ b/AssetManager.Infrastructure/Services/MarketDataService.cs @@ -187,10 +187,7 @@ public class MarketDataService : IMarketDataService throw new InvalidOperationException($"获取到的价格无效: {symbol} = {response.Price}"); } - // 写入数据库缓存 - await SavePriceCacheAsync(symbol, assetType, response, source); - - // 同时写入内存缓存(5分钟有效) + // 先写入内存缓存(确保返回给调用者) var cacheKey = $"{symbol.ToUpper()}_{assetType.ToUpper()}"; var expireAt = DateTime.Now.AddMinutes(5); _memoryCache[cacheKey] = (new MarketPriceCache @@ -203,6 +200,19 @@ public class MarketDataService : IMarketDataService ExpiredAt = expireAt }, expireAt); + // 写入数据库缓存(Fire-and-Forget,失败不影响主流程) + _ = Task.Run(async () => + { + try + { + await SavePriceCacheAsync(symbol, assetType, response, source); + } + catch (Exception ex) + { + _logger.LogWarning(ex, "[数据库缓存写入失败] Symbol={Symbol},忽略(内存缓存已生效)", symbol); + } + }); + return response; }