C# Memcached緩存用法實例詳解
本文實例講述了C#中Memcached緩存的用法,分享給大家供大家參考。具體方法如下:
ICacheStrategy.cs文件如下:
{
/// <summary>
/// 添加數(shù)據(jù)到緩存
/// </summary>
/// <param name="objId">緩存名稱</param>
/// <param name="o">緩存內(nèi)容</param>
/// <param name="second">緩存時間(秒)</param>
void Add(string objId, object o, int second);
/// <summary>
/// 添加數(shù)據(jù)到緩存 (依賴其它緩存)
/// </summary>
/// <param name="objId">緩存名稱</param>
/// <param name="o">緩存內(nèi)容</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">緩存內(nèi)容</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">緩存內(nèi)容</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">緩存內(nèi)容</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">緩存內(nèi)容</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#程序設(shè)計有所幫助。
相關(guān)文章
C#中new和override的區(qū)別個人總結(jié)
這篇文章主要介紹了C#中new和override的區(qū)別個人總結(jié),本文以問答的方式講解了new和override的區(qū)別,需要的朋友可以參考下2015-06-06Unity編輯器選擇器工具類Selection常用函數(shù)示例詳解
這篇文章主要為大家介紹了Unity編輯器選擇器工具類Selection常用函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08