Memcached

Memcached的使用 
一 、Memcached服务器端的安装 (此处将其作为系统服务安装) 
     下载文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006) 
   1 解压缩文件到c:memcached 
   2 命令行输入 'c:memcachedmemcached.exe -d install' 
   3 命令行输入 'c:memcachedmemcached.exe -d start' ,该命令启动 Memcached ,默认监听端口为 11211 
  通过 memcached.exe -h 可以查看其帮助 

using Memcached.ClientLibrary;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Web;

/// <summary>
/// MemberHelper 的摘要说明
/// </summary>
public abstract class MemberHelper
{

    #region 创建Memcache服务
    /// <summary>
    /// 创建Memcache服务
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">Socket连接池名称</param>
    /// <returns>Memcache客户端代理类</returns>
    public static MemcachedClient CreateServer(ArrayList serverlist, string poolName)
    {
        //初始化memcache服务器池
        SockIOPool pool = SockIOPool.GetInstance(poolName);
        //设置Memcache池连接点服务器端。
        pool.SetServers(serverlist);
        pool.Initialize();
        //其他参数根据需要进行配置 

        //创建了一个Memcache客户端的代理类。
        MemcachedClient mc = new MemcachedClient();
        mc.PoolName = poolName;
        mc.EnableCompression = false;//是否压缩 

        return mc;
    }
    #endregion

    #region 缓存是否存在
    /// <summary>
    /// 缓存是否存在
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="key"></param>
    /// <returns></returns>
    public static bool CacheIsExists(ArrayList serverlist, string poolName, string key)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);

        if (mc.KeyExists(key))
        {
            return true;
        }
        else
        {
            return false;
        }

    }
    #endregion

    #region 添加缓存

    #region 添加缓存(键不存在则添加,键存在则不能添加)
    /// <summary>
    /// 添加缓存(键不存在则添加,键存在则不能添加)
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">连接池名称</param>
    /// <param name="key"></param>
    /// <param name="value"></param>
    /// <param name="minutes">过期分钟数</param>
    /// <returns></returns>
    public static bool AddCache(ArrayList serverlist, string poolName, string key, string value, int minutes)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);
        return mc.Add(key, value, DateTime.Now.AddMinutes(minutes));
    }
    #endregion

    #region 添加缓存(键不存在则添加,键存在则覆盖)
    /// <summary>
    /// 添加缓存(键不存在则添加,键存在则覆盖)
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">连接池名称</param>
    /// <param name="key"></param>
    /// <param name="value"></param>
    /// <param name="minutes">过期分钟数</param>
    /// <returns></returns>
    public static bool SetCache(ArrayList serverlist, string poolName, string key, string value, int minutes)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);
        return mc.Set(key, value, DateTime.Now.AddMinutes(minutes));
    }
    #endregion

    #endregion

    #region 替换缓存

    #region 替换缓存(键存在的才能替换,不存在则不替换)
    /// <summary>
    /// 替换缓存(键存在的才能替换,不存在则不替换)
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">连接池名称</param>
    /// <param name="key"></param>
    /// <param name="value"></param>
    /// <param name="minutes">过期分钟数</param>
    /// <returns></returns>
    public static bool ReplaceCache(ArrayList serverlist, string poolName, string key, string value, int minutes)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);
        return mc.Replace(key, value, DateTime.Now.AddMinutes(minutes));
    }
    #endregion

    #endregion

    #region 获取缓存

    #region 获取单个键对应的缓存
    /// <summary>
    /// 获取单个键对应的缓存
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">连接池名称</param>
    /// <param name="key"></param> 
    /// <returns></returns>
    public static object GetCache(ArrayList serverlist, string poolName, string key)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);
        if (mc.KeyExists(key))
        {
            return mc.Get(key);
        }
        else
        {
            return "";
        }
    }
    #endregion

    #region 获取键数组对应的值
    /// <summary>
    /// 获取键数组对应的值
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">连接池名称</param>
    /// <param name="keys">键列表</param>
    /// <returns>Hashtable键值对</returns>
    public static Hashtable GetCacheHt(ArrayList serverlist, string poolName, string[] keys)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);
        return mc.GetMultiple(keys);
    }
    #endregion

    #region 获取键数组对应的值
    /// <summary>
    /// 获取键数组对应的值
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">连接池名称</param>
    /// <param name="keys">键列表</param>
    /// <returns>值的数组(不包含键)</returns>
    public static object[] GetCacheList(ArrayList serverlist, string poolName, string[] keys)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);
        object[] list = mc.GetMultipleArray(keys);
        ArrayList returnList = new ArrayList();
        for (int i = 0; i < list.Length; i++)
        {
            if (list[i] != null)
            {
                returnList.Add(list[i]);
            }
        }
        return returnList.ToArray();
    }
    #endregion

    #endregion

    #region 删除缓存
    /// <summary>
    /// 删除缓存
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">连接池名称</param>
    /// <param name="key"></param>
    /// <returns></returns>
    public static bool DelCache(ArrayList serverlist, string poolName, string key)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);
        return mc.Delete(key);
    }
    #endregion

    #region 清空所有缓存
    /// <summary>
    /// 清空所有缓存
    /// </summary>
    /// <param name="serverlist">IP端口列表</param>
    /// <param name="poolName">连接池名称</param>
    /// <returns></returns>
    public static bool FlushAll(ArrayList serverlist, string poolName)
    {
        MemcachedClient mc = CreateServer(serverlist, poolName);
        return mc.FlushAll();
    }
    #endregion
}
原文地址:https://www.cnblogs.com/jmzs/p/4973587.html