#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;
}
}