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
}
}