|
memcached 是个免费开源,高效,快速的分布式内存对象缓存系统
目前最新的memcached是1.4.15版,下载地址 (源码)
window下安装版 http://code.jellycan.com/memcached/
测试版本: memcached1.4
1.memcache安装/启动
直接解压,然后打开cmd转到,撞到memcached所在的目录,输入
安装命令 : memcached.exe -d install
启动服务: memcached.exe -d start
设置端口可以使用 -p port_number(默认是11211), 设置最大使用内存 : -m <num> (默认是64MB)
memcached 其他命令:
-d restart 重启, -d uninstall 卸载 , -l ipaddress 设置连接的主机地址( 默认本机)
-d stop|shutdown 关闭正在运行的memcached服务
2. memcached使用
这里客户端类库使用 Enyim.Caching,当前版本是2.12 , Enyim.Caching除了支持memcached外还支持membase的访问,membase默认的net客户端也是使用Enyim.Caching库
a.新建一个NET 控制端工程
b.定义一个实体类 User
c.定义一个MemcacheClient辅助类,对memcached操作简单封装
代码:
User实体类
[Serializable]
public class User {
public string ID { get; set; }
public string UserName { get; set; }
public string Address { get; set; }
}
Memcached辅助类
public class MemcachedClient<TObject> {
private MemcachedClient(){
this.init_memcached_client();
}
private static MemcachedClient<TObject> _instance = null;
public static MemcachedClient<TObject> Instance {
get {
if (null == _instance) {
_instance = new MemcachedClient<TObject>();
}
return _instance;
}
}
private Enyim.Caching.MemcachedClient _client = null;
private void init_memcached_client() {
//通过编码配置memcached客户端
var config = new MemcachedClientConfiguration();
config.AddServer("127.0.0.1", 11211);
_client = new Enyim.Caching.MemcachedClient(config);
}
//缓存数据
//key 键值,用于获取指定的对象
//obj 存储的数据
public bool Store(TObject obj, string key) {
bool result = _client.Store(StoreMode.Add, key, obj);
return result;
}
//从缓存中移除指定key的数据
public bool Remove(string key) {
bool result = _client.Remove(key);
return result;
}
//指定key获取关联数据
public TObject Query(string key) {
object tempObj = null;
if (_client.TryGet(key, out tempObj)) {
return (TObject)tempObj;
}
else {
return default( TObject );
}
}
}
测试
class Program {
static void Main(string[] args) {
create_and_set_user();
//get data
User temp = MemcachedClient<User>.Instance.Query("0006");
string string_message = "ID:" + temp.ID +
" - Name:" + temp.UserName +
" - Address:" + temp.Address;
Console.WriteLine(string_message);
Console.ReadKey(true);
}
private static void create_and_set_user() {
User objuser = new User { ID = "0006", UserName = "Andy", Address = "fuzhou-china" };
bool result = MemcachedClient<User>.Instance.Store(objuser, objuser.ID);
Console.WriteLine("Store {0} , Result: {1}", objuser.UserName, result.ToString());
}
}
对memcached的安装及简单的应用,在实际应用中可以设计到数据的序列化以及数据传递的格式,可以结合Protobuf和json来使用
===================================================================
|
|
|