下面的实例实现的功能很简单,根据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文件
< 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(可以下载的代码中找到)。
基础代码如下:
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.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
本文介绍了如何使用memcached作为缓存服务器,并通过Enyim.Caching库在C#中实现基本操作。包括服务组件安装、配置、存取对象实例、并展示对象类型支持及内存存储结构核心部分。
1506

被折叠的 条评论
为什么被折叠?



