对比新文件 |
| | |
| | | 锘縰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)); |
| | | } |
| | | } |
| | | } |