Memcached 使用 及.NET客戶端調用


memcached安裝:
============================================================================

    1 解壓縮文件到c:\memcached

   2 命令行輸入 'c:\memcached\memcached.exe -d install' 

    3 命令行輸入 'c:\memcached\memcached.exe -d start' ,該命令啟動 Memcached ,默認監聽端口為 11211

注:

如果出現如下錯誤

 “ failed to install service or service already installed”

解決方法:

管理員身份安裝,首先找出cmd.exe的原文件

右擊以管理員身份運行,接下來就OK(win7下的用戶).

如果下載的是二進制的版本,直接運行就可以了,可以加上參數來加以設置。


常用設置:
-p <num>          監聽的端口
-l <ip_addr>      連接的IP地址, 默認是本機
-d start          啟動memcached服務
-d restart        重起memcached服務
-d stop|shutdown  關閉正在運行的memcached服務
-d install        安裝memcached服務
-d uninstall      卸載memcached服務
-u <username>     以<username>的身份運行 (僅在以root運行的時候有效)
-m <num>          最大內存使用,單位MB。默認64MB
-M                內存耗盡時返回錯誤,而不是刪除項
-c <num>          最大同時連接數,默認是1024
-f <factor>       塊大小增長因子,默認是1.25
-n <bytes>        最小分配空間,key+value+flags默認是48
-h                顯示幫助


memcached .net客戶端調用:
===============================================================================
 
一、

 

2) NET memcached client library

  下載地址:https://sourceforge.net/projects/memcacheddotnet


       memcached 客戶端類庫
        其中,客戶端類庫包括以下幾個DLL:

       Memcached.ClientLibrary.dll
       ICSharpCode.SharpZipLib.dll
       log4net.dll

  把這個三個 DLL 放入Bin 目錄,在項目中引用  Memcached.ClientLibrary.dll
 
 使用時 引入命名空間  using Memcached.ClientLibrary

 

二、 memcached使用了log4net,所以我們先配置log4net  (這個環節可以 不做 )
在web.config里找到configSections節點,添加以下內容
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

再在configSections節點之外,增加以下內容:

<log4net>
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
            <param name="File" value="LogFiles/"/>
            <param name="AppendToFile" value="true"/>
            <param name="MaxSizeRollBackups" value="10"/>
            <param name="StaticLogFileName" value="false"/>
            <param name="DatePattern" value="yyyy-MM-dd".txt""/>
            <param name="RollingStyle" value="Date"/>
            <layout type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger %ndc - %message%newline"/>
            </layout>
        </appender>
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger %ndc - %message%newline" />
            </layout>
        </appender>
        <root>
            <level value="ALL" />
            <appender-ref ref="RollingLogFileAppender" />
            <appender-ref ref="ConsoleAppender" />
        </root>
        <logger name="Memcached.ClientLibrary">
            <level value="WARN" />

        </logger>
    </log4net>

 

 

三、初始化SockIOPool

SockIOPool是Memcached客戶端提供的一個套接字連接池,通俗講,就是與Memcached服務器端交換數據的對象。SockIOPool在應用程序啟動時初始化一次就可以了
(一般寫在 靜太構造 里就行了)

 //服務器端列表          

string[] serverlist = { "127.0.0.1:11211" };           
//初始化池           
SockIOPool sock = SockIOPool.GetInstance();           
sock.SetServers(serverlist);//添加服務器列表           
sock.InitConnections = 3;//設置連接池初始數目           
sock.MinConnections = 3;//設置最小連接數目           
sock.MaxConnections = 5;//設置最大連接數目           
sock.SocketConnectTimeout = 1000;//設置連接的套接字超時。           
sock.SocketTimeout = 3000;//設置套接字超時讀取           
sock.MaintenanceSleep = 30;//設置維護線程運行的睡眠時間。如果設置為0,那么維護線程將不會啟動;           
//獲取或設置池的故障標志。           
//如果這個標志被設置為true則socket連接失敗,           
//將試圖從另一台服務器返回一個套接字如果存在的話。           
//如果設置為false,則得到一個套接字如果存在的話。否則返回NULL,如果它無法連接到請求的服務器。           
sock.Failover = true;            //如果為false,對所有創建的套接字關閉Nagle的算法。           
sock.Nagle = false;           
sock.Initialize();

 


四、使用Memcached

MemcachedClient mc = new MemcachedClient();

mc.EnableCompression = true; //是否啟用壓縮數據

mc.Set(key,val);//設置 鍵值
      
mc.KeyExists(key) //鍵 是否存
mc.Get(key)   //獲取 一個鍵值
mc.Delete(key);// 刪除 鍵值


五、 一個簡單的例子


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

namespace CachedApp
{
    public class MCache
    {
       MemcachedClient mc = new MemcachedClient();//初始化一個客戶端 
        static MCache()
        {

         
            string[] serverlist = { "172.18.30.33:11211" }; //服務器列表,可多個         
            SockIOPool pool = SockIOPool.GetInstance();

            //根據實際情況修改下面參數
            pool.SetServers(serverlist);
            pool.InitConnections = 3;
            pool.MinConnections = 3;
            pool.MaxConnections = 5;
            pool.SocketConnectTimeout = 1000;
            pool.SocketTimeout = 3000;
            pool.MaintenanceSleep = 30;
            pool.Failover = true;
            pool.Nagle = false;
            pool.Initialize(); // initialize the pool for memcache servers           
       
        }
      

        public  object get(string key)
        {
          

            return mc.Get(key);      
       
        }

        public  object set(string key,string val)
        {

            return mc.Set(key,val);

        }


    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM