Memcached在.NET中的应用
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。通过memcached协议与守护进程通信。
memcached-Server端
在服务端运行:
# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211
这将会启动一个占用2G内存的进程,并打开11211端口用于接收请求。由于32位系统只能处理4G内存的寻址,所以在大于4G内存使用PAE的32位服务器上可以运行2-3个进程,并在不同端口进行监听。
memcached-Client端
先熟悉一下Memcached.ClientLibrary 这个.NET环境下的API
$$-SockIOPool-$$
客户端到memcached服务器端的socket连接池
创建连接池SockIOPool pool = SockIOPool.GetInstance(); 等价于 SockIOPool pool = SockIOPool.GetInstance("default pool");
设置连接池管理的链接pool.SetServers(["192.168.1.2:11211","192.168.1.3:11211"]); 等价于poo.SetServers(new ArrayList(["192.168.1.2:11211","192.168.1.3:11211"]));
设置连接池的初始容量,最小容量,最大容量,Socket 读取超时时间,Socket连接超时时间
pool.InitConnections = 3; // default 3
pool.MinConnections = 3; // default 3
pool.MaxConnections = 5;// default 5
pool.SocketConnectTimeOut = 50; // default 50,25 倍数
pool.SocketTimeOut = 3000;
到上面为止只是设置了基础属性,pool里面还没有供你可以使用的
socketpoo.Initialize(); // 此时容器才正式初始化,此外还有一些辅助和状态判断的方法属性,略
$$-SockIO-$$
Socket的包装类,SockIOPool里面装的就是它
$$-MemcachedClient-$$
主要通过这个类来操作内存数据这是我们主要使用的API
功能:设置,添加,删除,替换,压缩、解压缩数据
创建MemcachedClient mc = new MemcachedClient();
修改数据string key = "key1";string value = "value1";
mc.replace(key,value);mc.add(key,value);mc.set(key,value); // 存在=raplace,不存在=add
mc.get(key);//获取
mc.getMulti({"key1","key2"});
mc.delete(key);//删除
mc.FlushAll();//全部清除
mc.storeCount(key,counter);//当作计数器,counter计数器 long型