using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Caching.Redis; using System; using System.Collections.Generic; using System.Text; namespace CC.Yi.Common.Cache { public class RedisCacheService :ICacheWriter { private RedisCache _redisCache = null; public RedisCacheService(RedisCacheOptions options) { _redisCache = new RedisCache(options); } /// /// 获取缓存 /// /// 缓存key /// public string Get(string key) { try { if (!string.IsNullOrEmpty(key)) { return Encoding.UTF8.GetString(_redisCache.Get(key)); } else { return string.Empty; } } catch { return null; } } /// /// 添加缓存 /// /// 缓存key /// 缓存值 /// 绝对过期时间(分钟) public void Add(string key, string value, int ExpirationTime = 20) { if (!string.IsNullOrEmpty(key)) { _redisCache.Set(key, Encoding.UTF8.GetBytes(value), new DistributedCacheEntryOptions() { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(ExpirationTime) }); } } public void AddString(string key, string value) { _redisCache.SetString(key, value); } public string GetString(string key) { return _redisCache.GetString(key); } /// /// 移除缓存 /// /// 缓存key public void Remove(string key) { if (!string.IsNullOrEmpty(key)) { _redisCache.Remove(key); } } /// /// 更新缓存 /// /// 缓存key /// 缓存值 /// public void Replace(string key, string value, int ExpirationTime = 20) { if (!string.IsNullOrEmpty(key)) { _redisCache.Remove(key); _redisCache.Set(key, Encoding.UTF8.GetBytes(value), new DistributedCacheEntryOptions() { AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(ExpirationTime) }); } } } }