C# Memcached緩存用法實例詳解
本文實例講述了C#中Memcached緩存的用法,分享給大家供大家參考。具體方法如下:
ICacheStrategy.cs文件如下:
{
/// <summary>
/// 添加數(shù)據(jù)到緩存
/// </summary>
/// <param name="objId">緩存名稱</param>
/// <param name="o">緩存內容</param>
/// <param name="second">緩存時間(秒)</param>
void Add(string objId, object o, int second);
/// <summary>
/// 添加數(shù)據(jù)到緩存 (依賴其它緩存)
/// </summary>
/// <param name="objId">緩存名稱</param>
/// <param name="o">緩存內容</param>
/// <param name="second">緩存時間(秒)</param>
/// <param name="dependKey">依賴緩存名稱數(shù)組</param>
void AddCacheDepend(string objId, object o, int second, string[] dependKey);
/// <summary>
/// 添加數(shù)據(jù)到緩存 (依賴文件)
/// </summary>
/// <param name="objId">緩存名稱</param>
/// <param name="o">緩存內容</param>
/// <param name="second">緩存時間(秒)</param>
/// <param name="files">依賴緩存名稱文件名數(shù)組</param>
void AddFileDepend(string objId, object o, int second, string[] files);
/// <summary>
/// 刪除指定緩存
/// </summary>
/// <param name="objId"></param>
void RemoveCache(string objId);
/// <summary>
/// 刪除所有緩存
/// </summary>
void RemoveCacheAll();
/// <summary>
/// 刪除匹配到的緩存
/// </summary>
/// <param name="pattern"></param>
/// <returns></returns>
void RemoveCacheRegex(string pattern);
/// <summary>
/// 獲取所有緩存鍵
/// </summary>
/// <returns></returns>
IList<string> GetCacheKeys();
/// <summary>
/// 搜索 匹配到的緩存
/// </summary>
/// <param name="pattern"></param>
/// <returns></returns>
IList<string> SearchCacheRegex(string pattern);
/// <summary>
/// 獲得緩存數(shù)據(jù)
/// </summary>
/// <param name="objId"></param>
/// <returns></returns>
object GetCacheData(string objId);
/// <summary>
/// 判斷此緩存是否有效
/// </summary>
/// <param name="objID"></param>
/// <returns></returns>
bool HasCache(string objID);
}
MemcachedStrategy.cs文件如下:
{
#region ICacheStrategy 成員
/// <summary>
/// 添加數(shù)據(jù)到緩存
/// </summary>
/// <param name="objId">緩存名稱</param>
/// <param name="o">緩存內容</param>
/// <param name="second">緩存時間(秒)</param>
public void Add(string objId, object o, int second)
{
if (second > 0)
{
MemcachedManager.CacheClient.Set(objId, o, DateTime.Now.AddSeconds(second));
}
else
{
MemcachedManager.CacheClient.Set(objId, o);
}
}
#region 緩存依賴沒有用到memcached
/// <summary>
/// 添加數(shù)據(jù)到緩存 (依賴其它緩存)
/// </summary>
/// <param name="objId">緩存名稱</param>
/// <param name="o">緩存內容</param>
/// <param name="second">緩存時間(秒)</param>
/// <param name="dependKey">依賴緩存名稱數(shù)組</param>
public void AddCacheDepend(string objId, object o, int second, string[] dependKey)
{
CacheDependency dependencies = new CacheDependency(null, dependKey, DateTime.Now);
HttpRuntime.Cache.Insert(objId, o, dependencies, DateTime.Now.AddSeconds((double)second), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
}
/// <summary>
/// 添加數(shù)據(jù)到緩存 (依賴文件)
/// </summary>
/// <param name="objId">緩存名稱</param>
/// <param name="o">緩存內容</param>
/// <param name="second">緩存時間(秒)</param>
/// <param name="files">依賴緩存名稱文件名數(shù)組</param>
public void AddFileDepend(string objId, object o, int second, string[] files)
{
CacheDependency dependencies = new CacheDependency(files, DateTime.Now);
HttpRuntime.Cache.Insert(objId, o, dependencies, DateTime.Now.AddSeconds((double)second), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);
}
#endregion
/// <summary>
/// 刪除指定緩存
/// </summary>
/// <param name="objId"></param>
public void RemoveCache(string objId)
{
if (MemcachedManager.CacheClient.KeyExists(objId))
MemcachedManager.CacheClient.Delete(objId);
}
/// <summary>
/// 刪除所有緩存
/// </summary>
public void RemoveCacheAll()
{
MemcachedManager.CacheClient.FlushAll();
}
/// <summary>
/// 刪除匹配到的緩存
/// </summary>
/// <param name="pattern"></param>
public void RemoveCacheRegex(string pattern)
{
IList<string> list = SearchCacheRegex(pattern);
foreach (var item in list)
{
MemcachedManager.CacheClient.Delete(item);
}
}
/// <summary>
/// 獲取所有緩存鍵
/// </summary>
/// <returns></returns>
public IList<string> GetCacheKeys()
{
return MemcachedManager.GetAllKeys();
}
/// <summary>
/// 搜索 匹配到的緩存
/// </summary>
/// <param name="pattern"></param>
/// <returns></returns>
public IList<string> SearchCacheRegex(string pattern)
{
List<string> l = new List<string>();
IList<string> cacheKeys = MemcachedManager.GetAllKeys();
foreach (var item in cacheKeys)
{
if (Regex.IsMatch(item, pattern))
{
l.Add(item);
}
}
return l.AsReadOnly();
}
/// <summary>
/// 獲得緩存數(shù)據(jù)
/// </summary>
/// <param name="objId"></param>
/// <returns></returns>
public object GetCacheData(string objId)
{
return MemcachedManager.CacheClient.Get(objId);
}
/// <summary>
/// 判斷此緩存是否有效
/// </summary>
/// <param name="objID"></param>
/// <returns></returns>
public bool HasCache(string objID)
{
return MemcachedManager.CacheClient.KeyExists(objID);
}
#endregion
}
希望本文所述對大家的C#程序設計有所幫助。
相關文章
C# IQueryable及IEnumerable區(qū)別解析
這篇文章主要介紹了C# IQueryable及IEnumerable區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09
openfiledialog讀取txt寫入數(shù)據(jù)庫示例
這篇文章主要介紹了openfiledialog讀取txt寫入數(shù)據(jù)庫示例,需要的朋友可以參考下2014-03-03

