Memcached

Memcached的使用 
一 、Memcached服務器端的安裝 (此處將其做爲系統服務安裝) 
     下載文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006) 
   1 解壓縮文件到c:\memcached 
   2 命令行輸入 'c:\memcached\memcached.exe -d install' 
   3 命令行輸入 'c:\memcached\memcached.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
}
相關文章
相關標籤/搜索