From c020f31a67fc5aa5644511bddff075f7ecc85234 Mon Sep 17 00:00:00 2001 From: qinchulong <qinchulong@hnkhzn.com> Date: 星期二, 27 五月 2025 15:35:27 +0800 Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/HuaYiZhongHeng/ZhongHeLiTiKu --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 113 insertions(+), 0 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs" new file mode 100644 index 0000000..5c92ef9 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_Core/Caches/MemoryCacheService.cs" @@ -0,0 +1,113 @@ +锘縰sing Microsoft.Extensions.Caching.Memory; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WIDESEA_Core.Caches +{ + public class MemoryCacheService : ICacheService + { + protected IMemoryCache _cache; + public MemoryCacheService(IMemoryCache cache) + { + _cache = cache; + + } + + public bool Add(string key, string value, int expireSeconds = -1, bool isSliding = false) + { + return AddObject(key, value, expireSeconds, isSliding); + } + + public bool AddObject(string key, object value, int expireSeconds = -1, bool isSliding = false) + { + if (expireSeconds != -1) + { + _cache.Set(key, + value, + new MemoryCacheEntryOptions() + .SetSlidingExpiration(new TimeSpan(0, 0, expireSeconds)) + ); + } + else + { + _cache.Set(key, value); + } + + return true; + } + + public void AddOrUpdate(string key, string value, int expireSeconds = -1, bool isSliding = false) + { + if (!string.IsNullOrEmpty(Get(key))) + { + Remove(key); + Add(key, value, expireSeconds, isSliding); + } + else + { + Add(key, value, expireSeconds, isSliding); + } + } + + public void Dispose() + { + if (_cache != null) + _cache.Dispose(); + GC.SuppressFinalize(this); + } + + public bool Exists(string key) + { + if (key == null) + { + throw new ArgumentNullException(nameof(key)); + } + return _cache.Get(key) != null; + } + + public T Get<T>(string key) where T : class + { + if (key == null) + { + throw new ArgumentNullException(nameof(key)); + } + return _cache.Get(key) as T; + } + + public string Get(string key) + { + try + { + return _cache.Get(key)?.ToString(); + } + catch + { + return string.Empty; + } + } + + public bool Remove(string key) + { + if (key == null) + { + throw new ArgumentNullException(nameof(key)); + } + _cache.Remove(key); + + return !Exists(key); + } + + public void Remove(IEnumerable<string> keys) + { + if (keys == null) + { + throw new ArgumentNullException(nameof(keys)); + } + + keys.ToList().ForEach(item => _cache.Remove(item)); + } + } +} -- Gitblit v1.9.3