#region << 版 本 注 释 >> /*-------------------------------------------------------------------- * 版权所有 (c) 2025 WenJY 保留所有权利。 * CLR版本:4.0.30319.42000 * 机器名称:Mr.Wen's MacBook Pro * 命名空间:Sln.Rfid.Cache * 唯一标识:9FBB0650-8E73-432A-9697-EC66FA442C3F * * 创建者:WenJY * 电子邮箱: * 创建时间:2025-11-25 14:09:44 * 版本:V1.0.0 * 描述: * *-------------------------------------------------------------------- * 修改人: * 时间: * 修改说明: * * 版本:V1.0.0 *--------------------------------------------------------------------*/ #endregion << 版 本 注 释 >> using System; using System.Collections.Generic; using System.Threading.Tasks; using Sln.Rfid.Model.dao; using Sln.Rfid.Repository.service; using Sln.Rfid.Serilog; using ZiggyCreatures.Caching.Fusion; namespace Sln.Rfid.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.Query(); //将值存入缓存,设置过期时间等 await _fusionCache.SetAsync(key, value, TimeSpan.FromSeconds(30)).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.Query(); await _fusionCache.SetAsync(key, value, TimeSpan.FromSeconds(5)).ConfigureAwait(false); } return isRes; } } }