using BloomFilter; using ZR.Infrastructure.Cache; namespace ZR.ServiceCore.SqlSugar { public class SqlSugarCache : ICacheService { private readonly IBloomFilter _bloomFilter; public SqlSugarCache(IBloomFilter bloomFilter) { _bloomFilter = bloomFilter; } public void Add(string key, V value) { RedisServer.Cache.Set(key, value, 3600 + RedisHelper.RandomExpired(5, 30)); // CacheHelper.SetCache(key, value); _bloomFilter.Add(key); } public void Add(string key, V value, int cacheDurationInSeconds) { RedisServer.Cache.Set(key, value, cacheDurationInSeconds); // CacheHelper.SetCaches(key, value, cacheDurationInSeconds); _bloomFilter.Add(key); } public bool ContainsKey(string key) { if (_bloomFilter.Contains(key)) { return RedisServer.Cache.Exists(key); } return false; // return CacheHelper.Exists(key); } public V Get(string key) { return RedisServer.Cache.Get(key); // return (V)CacheHelper.Get(key); } public IEnumerable GetAllKey() { var keys = RedisServer.Cache.Keys("cache:SqlSugarDataCache.*"); // return RedisServer.Cache.Keys("cache:SqlSugarDataCache.*"); keys = keys.Select(it => it.Replace("cache:", "")).ToArray(); return keys; // return CacheHelper.GetCacheKeys(); } public V GetOrCreate(string cacheKey, Func create, int cacheDurationInSeconds = int.MaxValue) { if (ContainsKey(cacheKey)) { var result = Get(cacheKey); if (result == null) { return create(); } else { return result; } } else { var result = create(); Add(cacheKey, result, cacheDurationInSeconds); return result; } } public void Remove(string key) { // key = key.Split("cache:")[1]; RedisServer.Cache.Del(key); // CacheHelper.Remove(key); } } }