enyim.com Memcached Client:memcached執行個體

來源:互聯網
上載者:User

標籤:

 在上一篇文章,我們講了,為什麼要使用memched做為快取服務器(沒看的同學請點這裡)。下面讓我們以memcached-1.2.1-win32版本的服務元件(安裝後是以一個windows服務做daemon)和C#API(Enyim.Caching)為基礎,做一個"Hello world"級的程式,讓我們真正感受到memcached就在我們身邊。後一的文章,我們還講memcached的核心部分(根據key來hash存取資料,快取資料在server端的記憶體儲存結構)和一些好的案例。

  下面的執行個體實現的功能很簡單,根據key來存取一個object對象(要支援Serializable才行哦),因為伺服器端資料都是byte型的資料群組實現存在。

 

服務的啟動: 

1, 將memcached-1.2.1-win32.zip解決到指定的地方,如c:\memcached

2, 命令列輸入 ‘c:\memcached\memcached.exe -d install‘ 
3, 命令列輸入 ‘c:\memcached\memcached.exe -d start‘ ,該命令啟動 Memcached,預設監聽連接埠為 11211
  可以通過 memcached.exe -h 可以查看其協助 

  

第一步:配置config檔案 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="enyim.com">
            <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
        </sectionGroup>
        <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
    </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>
    <memcached keyTransformer="Enyim.Caching.TigerHashTransformer, Enyim.Caching">
        <servers>
            <add address="127.0.0.1" port="11211" />
            
        </servers>
        <socketPool minPoolSize="2" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
    </memcached>
</configuration>

這裡的port:11211是, memcached-1.2.1-win32在安裝時預設使用的port.當然你可以用memcached.exe -p 連接埠號碼來自行設定。

 

第二步, 建立TestMemcachedApp的console project

引用Enyim.Caching.dll或者在solution中加入這個project(可以下載的代碼中找到)。

 

基礎代碼如下:

//create a instance of MemcachedClient
MemcachedClient mc = new MemcachedClient();
// store a string in the cache
mc.Store(StoreMode.Set, "MyKey", "Hello World");
// retrieve the item from the cache
Console.WriteLine(mc.Get("MyKey"));

 

完整代碼如下, 

using System;
using System.Collections.Generic;
using System.Text;
using Enyim.Caching;
using Enyim.Caching.Memcached;
using System.Net;
using Enyim.Caching.Configuration;

namespace DemoApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // create a MemcachedClient
            // in your application you can cache the client in a static variable or just recreate it every time
            MemcachedClient mc = new MemcachedClient();
            
            // store a string in the cache
            mc.Store(StoreMode.Set, "MyKey", "Hello World");

            // retrieve the item from the cache
            Console.WriteLine(mc.Get("MyKey"));

            // store some other items
            mc.Store(StoreMode.Set, "D1", 1234L);
            mc.Store(StoreMode.Set, "D2", DateTime.Now);
            mc.Store(StoreMode.Set, "D3", true);
            mc.Store(StoreMode.Set, "D4", new Product());

            mc.Store(StoreMode.Set, "D5", new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });            
            Console.WriteLine("D1: {0}", mc.Get("D1"));
            Console.WriteLine("D2: {0}", mc.Get("D2"));
            Console.WriteLine("D3: {0}", mc.Get("D3"));
            Console.WriteLine("D4: {0}", mc.Get("D4"));

            byte[] tmp = mc.Get<byte[]>("D5");

            // delete them from the cache
            mc.Remove("D1");
            mc.Remove("D2");
            mc.Remove("D3");
            mc.Remove("D4");

            // add an item which is valid for 10 mins
            mc.Store(StoreMode.Set, "D4", new Product(), new TimeSpan(0, 10, 0));

            Console.ReadLine();
        }

        // objects must be serializable to be able to store them in the cache
        [Serializable]
        class Product
        {
            public double Price = 1.24;
            public string Name = "Mineral Water";

            public override string ToString()
            {
                return String.Format("Product {{{0}: {1}}}", this.Name, this.Price);
            }
        }
    }
}

 

Server和Client API及執行個體代碼下載(在Enyim Memcached 1.2.0.2版本上的修改) 

 

下載memcached服務安裝地址:http://www.danga.com/memcached/

Client API:http://www.danga.com/memcached/apis.bml

enyim.com Memcached Client:memcached執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.