天天看點

Memcached for windows初步接觸 - 安裝與用戶端測試

1. 基本概念

    Memcached 是一個高性能的分布式記憶體對象緩存系統,用于動态Web應用以減輕資料庫負載。它通過在記憶體中緩存資料和對象來減少讀取資料庫的次數,進而提供動态、資料庫驅動網站的速度。Memcached基于一個存儲鍵/值對的hashmap。其守護程序(daemon )是用C寫的,但是用戶端可以用任何語言來編寫,并通過memcached協定與守護程序通信。

缺點: 它并不提供備援(例如,複制其hashmap條目);當某個伺服器S停止運作或崩潰了,所有存放在S上的鍵/值對都将丢失。

As we know, the current cache in ASP.NET is an in-process cache and can't be used in a web farm.

2. 下載下傳和安裝

  1)  下載下傳Windows的Server端

    下載下傳位址:http://code.jellycan.com/memcached/

  2) 安裝Memcache Server

    a. 下載下傳memcached的windows穩定版,解壓放某個盤下面,比如在E:\\memcached

    b. 進入cmd(win7使用者注意,必須用管理者方式打開cmd.exe)

    c. memcached.exe -d install (把memcached安裝為windows服務)

        解除安裝服務:  memcached.exe -d uninstall  

    d. memcached.exe -d start (啟動服務)

指令行常用設定:

-p <num>          監聽的端口(預設端口: 11211)

-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                顯示幫助

3. 用戶端調用

  1) 添加dll引用

    主要添加3個dll

      MemcachedProviders.dll

      Enyim.Caching.dll

      log4net.dll

  2) 配置檔案

<?xml version="1.0"?>

<configuration>

    <configSections>

        <section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders" allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>

    <sectionGroup name="enyim.com">

      <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching"/>

    </sectionGroup>

        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

    </configSections>

  <enyim.com>

    <memcached>

      <servers>

        <!-- put your own server(s) here-->

        <add address="127.0.0.1" port="11211"/>        

      </servers>

      <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00"/>

    </memcached>

  </enyim.com>

    <cacheProvider defaultProvider="MemcachedCacheProvider">

        <providers>

            <add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider, MemcachedProviders" keySuffix="_MySuffix_" defaultExpireTime="2000"/>

        </providers>               

    </cacheProvider>

    <log4net>

        <!-- Define some output appenders -->

        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">

            <layout type="log4net.Layout.PatternLayout">

                <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>

            </layout>

        </appender>

        <!--<threshold value="OFF" />-->

        <!-- Setup the root category, add the appenders and set the default priority -->

        <root>

            <priority value="WARN"/>

            <appender-ref ref="ConsoleAppender">

                <filter type="log4net.Filter.LevelRangeFilter">

                    <levelMin value="WARN"/>

                    <levelMax value="FATAL"/>

                </filter>

            </appender-ref>

        </root>

    </log4net>

  ...

</configuration>

   3) 簡單的C#調用代碼

//設定緩存

DistCache.Add("cache_key", cache_value);

//取緩存

string c = DistCache.Get("cache_key").ToString();

技術改變世界