C# Memcached缓存用法实例详解_C#教程-查字典教程网
C# Memcached缓存用法实例详解
C# Memcached缓存用法实例详解
发布时间:2016-12-28 来源:查字典编辑
摘要:本文实例讲述了C#中Memcached缓存的用法,分享给大家供大家参考。具体方法如下:ICacheStrategy.cs文件如下:复制代码代...

本文实例讲述了C#中Memcached缓存的用法,分享给大家供大家参考。具体方法如下:

ICacheStrategy.cs文件如下:

复制代码 代码如下:public interface ICacheStrategy

{

/// <summary>

/// 添加数据到缓存

/// </summary>

/// <param name="objId">缓存名称</param>

/// <param name="o">缓存内容</param>

/// <param name="second">缓存时间(秒)</param>

void Add(string objId, object o, int second);

/// <summary>

/// 添加数据到缓存 (依赖其它缓存)

/// </summary>

/// <param name="objId">缓存名称</param>

/// <param name="o">缓存内容</param>

/// <param name="second">缓存时间(秒)</param>

/// <param name="dependKey">依赖缓存名称数组</param>

void AddCacheDepend(string objId, object o, int second, string[] dependKey);

/// <summary>

/// 添加数据到缓存 (依赖文件)

/// </summary>

/// <param name="objId">缓存名称</param>

/// <param name="o">缓存内容</param>

/// <param name="second">缓存时间(秒)</param>

/// <param name="files">依赖缓存名称文件名数组</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>

/// 获得缓存数据

/// </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文件如下:

复制代码 代码如下:public class MemcachedStrategy : ICacheStrategy

{

#region ICacheStrategy 成员

/// <summary>

/// 添加数据到缓存

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

/// 添加数据到缓存 (依赖其它缓存)

/// </summary>

/// <param name="objId">缓存名称</param>

/// <param name="o">缓存内容</param>

/// <param name="second">缓存时间(秒)</param>

/// <param name="dependKey">依赖缓存名称数组</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>

/// 添加数据到缓存 (依赖文件)

/// </summary>

/// <param name="objId">缓存名称</param>

/// <param name="o">缓存内容</param>

/// <param name="second">缓存时间(秒)</param>

/// <param name="files">依赖缓存名称文件名数组</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>

/// 获得缓存数据

/// </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#教程学习
    热门C#教程学习
    编程开发子分类