#region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2025 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:Mr.Wen's MacBook Pro * 命名空间:Sln.Imm.Daemon.Cache * 唯一标识:C61D97E2-2108-46A3-974C-AFE6C83258BA * * 创建者:WenJY * 电子邮箱: * 创建时间:2025-09-05 11:29:42 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using Sln.Imm.Daemon.Model.dao; using Sln.Imm.Daemon.Repository.service; using Sln.Imm.Daemon.Serilog; using ZiggyCreatures.Caching.Fusion; namespace Sln.Imm.Daemon.Cache; public class BaseDeviceInfoCacheService { private readonly SerilogHelper _logger; private readonly IFusionCache _fusionCache; private readonly IBaseDeviceInfoService _service; public BaseDeviceInfoCacheService(SerilogHelper logger, IFusionCache fusionCache, IBaseDeviceInfoService service) { _logger = logger; _fusionCache = fusionCache; _service = service; } /// /// 通过缓存获取值 /// /// /// public async Task> GetValueAsync(string key) { var cachedValue = await _fusionCache.GetOrDefaultAsync>(key).ConfigureAwait(false); if (cachedValue != null) { _logger.Info($"通过Cache获取设备数据:{cachedValue.Count};条"); return cachedValue; } else { var value = _service.GetDeviceInfosByNavigate(); //将值存入缓存,设置过期时间等 await _fusionCache.SetAsync(key, value, TimeSpan.FromMinutes(5)).ConfigureAwait(false); _logger.Info($"通过ORM获取设备数据:{value.Count};条"); return value; } } public async Task SetValueAsync(string key, BaseDeviceInfo deviceInfo) { var isRes = _service.Update(deviceInfo); if (isRes) { var value = _service.GetDeviceInfosByNavigate(); await _fusionCache.SetAsync(key, value, TimeSpan.FromSeconds(5)).ConfigureAwait(false); } return isRes; } }