using System; using System.Collections.Generic; namespace OS.Common.Modules.CacheModule { public static class CacheUtil { internal static Dictionary CacheModules= new Dictionary(); static CacheUtil() { if (!CacheModules.ContainsKey(ModuleAsynKeys.Default)) { CacheModules.Add(ModuleCacheKeys.Default, new Cache()); } } /// /// 通过模块名称获取 /// /// /// public static ICache GetCache(string cacheModule) { if (!string.IsNullOrEmpty(cacheModule) && CacheModules.ContainsKey(cacheModule)) { return CacheModules[cacheModule]; } return CacheModules[ModuleCacheKeys.Default]; } /// /// 添加缓存,已存在不更新 /// /// 添加缓存对象类型 /// 添加对象的key /// 值 /// 相对过期的TimeSpan /// 绝对过期时间 /// 缓存分区名称 /// 模块名称 /// 是否添加成功 public static bool Add(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration = null, int db = 0, string moduleName=ModuleCacheKeys.Default) { return GetCache(moduleName).Add(key, obj, slidingExpiration, absoluteExpiration, db); } /// /// 添加缓存,如果存在则更新 /// /// 添加缓存对象类型 /// 添加对象的key /// 值 /// 相对过期的TimeSpan /// 绝对过期时间 /// 缓存分区db /// 模块名称 /// 是否添加成功 public static bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration = null, int db = 0, string moduleName=ModuleCacheKeys.Default) { return GetCache(moduleName).AddOrUpdate(key, obj, slidingExpiration, absoluteExpiration, db); } /// /// 获取缓存对象 /// /// 获取缓存对象类型 /// key /// 缓存分区db /// 模块名称 /// 获取指定key对应的值 public static T Get(string key, int db=0, string moduleName=ModuleCacheKeys.Default) { return GetCache(moduleName).Get(key, db); } /// /// 获取缓存对象 /// /// 获取缓存对象类型 /// key列表 /// 缓存分区db /// 模块名称 /// 获取多个不同类型key对应的不同值 public static IDictionary Get(IEnumerable keys, int db=0, string moduleName=ModuleCacheKeys.Default) { return GetCache(moduleName).Get(keys, db); } /// /// 移除缓存对象 /// /// /// /// 模块名称 /// 是否成功 public static bool Remove(string key, int db=0, string moduleName=ModuleCacheKeys.Default) { return GetCache(moduleName).Remove(key, db); } /// /// 判断是否存在缓存对象 /// /// key值 /// 缓存分区db /// 模块名称 /// public static bool Contains(string key, int db=0, string moduleName=ModuleCacheKeys.Default) { return GetCache(moduleName).Contains(key, db); } } }