using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Globalization; using System.Data; using CP.Cache; using CP.Common; using CP.Model; namespace CP.Business { /// /// 专门的缓存清理工具类 /// sam /// public class CacheUtils { /// /// 缓存 /// static WMCache cache = WMCache.GetCacheService(); /// /// 返回所有cache列表 /// /// public static List GetCacheList() { return cache.GetKeys(); } /// /// 清理所有Cache /// public static void RemoveAllCache() { cache.RemoveAll(); } /// /// 根据前缀筛选获取所有Cache列表 /// prefix对应枚举CachePrefix中的值 /// /// /// public static List GetCacheList(string prefix) { List clist = cache.GetKeys(); List rlist = new List(); if (clist != null && clist.Count > 0) { foreach (string s in clist) { if (s.IndexOf(prefix, StringComparison.CurrentCultureIgnoreCase) != -1) rlist.Add(s); } } return rlist; } /// /// 根据key名称清除某一个cache的数据 /// 完全匹配 /// /// public static void RemoveCacheByName(string key) { cache.RemoveObject(key); } /// /// 批量清理某一类cache数据 /// 模糊匹配 /// /// public static void RemoveCacheLikeName(string key) { cache.RemoveObjectByRegex(key); } /// /// 清理某个彩种关于试机号的所有Cache /// /// 彩种名称 public static void RemoveCacheLikeSjh(string prefix) { ///清理原始数据 string key = "datalistall"; if (!string.IsNullOrEmpty(prefix)) { List list = GetCacheList(prefix); for (int i = 0; i < list.Count; i++) { if (list[i].IndexOf(key, StringComparison.CurrentCultureIgnoreCase) != -1) cache.RemoveObject(list[i]); } } else { cache.RemoveObjectByRegex(key); } ///清理走势图页面数据 key = "sjh"; if (!string.IsNullOrEmpty(prefix)) { List list = GetCacheList(prefix); for (int i = 0; i < list.Count; i++) { if (list[i].IndexOf(key, StringComparison.CurrentCultureIgnoreCase) != -1) cache.RemoveObject(list[i]); } } else { cache.RemoveObjectByRegex(key); } } /// /// 清除某彩种所有缓存 /// /// public static void RemoveAllDataCache(string prefix) { var list = GetCacheList(prefix); foreach (var item in list) { RemoveCacheByName(item); } } #region 走势图/遗漏数据层面的Cache操作 /// /// 清除某前缀的所有原始数据缓存 /// prefix为空时,清除所有原始数据缓存 /// 一级缓存 /// /// 可为空 public static void RemoveDataCache(string prefix = null) { string key = "datalist"; string key2 = "kjh/data"; if (!string.IsNullOrEmpty(prefix)) { List list = GetCacheList(prefix); for (int i = 0; i < list.Count; i++) { if (list[i].IndexOf(key, StringComparison.CurrentCultureIgnoreCase) != -1 || list[i].IndexOf(key2, StringComparison.CurrentCultureIgnoreCase) != -1) cache.RemoveObjectByRegex(list[i]); } } else { cache.RemoveObjectByRegex(key); } } /// /// 清除某前缀的所有遗漏数据缓存 /// prefix为空时,清除所有遗漏数据缓存 /// 二级缓存 /// /// 可为空 public static void RemoveMissDataCache(string prefix = null) { string key = "/yl/data/"; if (!string.IsNullOrEmpty(prefix)) { List list = GetCacheList(prefix); for (int i = 0; i < list.Count; i++) { if (list[i].IndexOf(key, StringComparison.CurrentCultureIgnoreCase) != -1) cache.RemoveObjectByRegex(list[i]); } } else { cache.RemoveObjectByRegex(key); } } #endregion #region 走势图页面Cache操作 /// /// 获取某前缀的所有走势图页面缓存 /// prefix为空时,获取所有走势图页面缓存 /// /// /// public static List GetZstPageCacheList(string prefix = null) { string key = "/zst/page/"; List rlist = new List(); List list = new List(); if (!string.IsNullOrEmpty(prefix)) list = GetCacheList(prefix); else list = GetCacheList(); for (int i = 0; i < list.Count; i++) { if (list[i].IndexOf(key, StringComparison.CurrentCultureIgnoreCase) != -1) rlist.Add(list[i]); } return rlist; } /// /// 清除某前缀的所有走势图页面缓存 /// prefix为空时,清除所有走势图页面缓存 /// 三级缓存 /// /// 可为空. public static void RemoveZstPageCache(string prefix = null) { List list = GetZstPageCacheList(prefix); for (int i = 0; i < list.Count; i++) { cache.RemoveObjectByRegex(list[i]); } } #endregion #region 遗漏页面Cache操作 /// /// 获取某前缀的所有遗漏页面缓存 /// prefix为空时,获取所有遗漏页面缓存 /// /// /// public static List GetMissPageCacheList(string prefix = null) { string key = "/yl/page/"; List rlist = new List(); List list = new List(); if (!string.IsNullOrEmpty(prefix)) list = GetCacheList(prefix); else list = GetCacheList(); for (int i = 0; i < list.Count; i++) { if (list[i].IndexOf(key, StringComparison.CurrentCultureIgnoreCase) != -1) rlist.Add(list[i]); } return rlist; } /// /// 清除某前缀的所有遗漏页面缓存 /// prefix为空时,清除所有遗漏页面缓存 /// 三级缓存 /// /// 可为空 public static void RemoveMissPageCache(string prefix = null) { List list = GetMissPageCacheList(prefix); for (int i = 0; i < list.Count; i++) { cache.RemoveObjectByRegex(list[i]); } } #endregion } }