memcached安装及.NET中的Memcached.ClientLibrary使用
服务端:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip
64:http://blog.couchbase.com/memcached-windows-64-bit-pre-release-available
1. 解压缩文件到c:\memcached
2. 命令行输入 'c:\memcached\memcached.exe -d install'
3. 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 Memcached ,默认监听端口为 11211
通过 memcached.exe -h 可以查看其帮助
以上的安装和启动都是在默认环境下进行的,在安装时可设置如下参数:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
安装可能出出现的问题:

如果出现上图的问题:
1种情况是找到cmd.exe 右键管理员的身份运行就可以了
2是去服务那里看看是不是已经安装了

客户端:http://sourceforge.net/projects/memcacheddotnet/
1. 将Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll 等放到bin目录
2. 引用Memcached.ClientLibrary.dll

class AMemcached
{
public static MemcachedClient cache;
static AMemcached()
{
string[] servers = { "172.18.5.66:11211" };
//初始化池
SockIOPool pool = SockIOPool.GetInstance();
//设置服务器列表
pool.SetServers(servers);
//各服务器之间负载均衡的设置比例
pool.SetWeights(new int[] { 1 });
//初始化时创建连接数
pool.InitConnections = 3;
//最小连接数
pool.MinConnections = 3;
//最大连接数
pool.MaxConnections = 5;
//连接的最大空闲时间,下面设置为6个小时(单位ms),超过这个设置时间,连接会被释放掉
pool.MaxIdle = 1000 * 60 * 60 * 6;
//socket连接的超时时间,下面设置表示不超时(单位ms),即一直保持链接状态
pool.SocketConnectTimeout = 0;
//通讯的超市时间,下面设置为3秒(单位ms),.Net版本没有实现
pool.SocketTimeout = 1000 * 3;
//维护线程的间隔激活时间,下面设置为30秒(单位s),设置为0时表示不启用维护线程
pool.MaintenanceSleep = 30;
//设置SocktIO池的故障标志
pool.Failover = true;
//是否对TCP/IP通讯使用nalgle算法,.net版本没有实现
pool.Nagle = false;
//socket单次任务的最大时间(单位ms),超过这个时间socket会被强行中端掉,当前任务失败。
pool.MaxBusy = 1000 * 10;
pool.Initialize();
cache = new MemcachedClient();
//是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
cache.EnableCompression = false;
//压缩设置,超过指定大小的都压缩
//cache.CompressionThreshold = 1024 * 1024;
}
}
class Program
{
static void Main(string[] args)
{
//存入key为a,value为123的一个缓存
AMemcached.cache.Add("a", "123");
//读出key为a的缓存值
var s = AMemcached.cache.Get("a");
//输出
Console.WriteLine(s);
Console.ReadKey();
}
}

Note:首先告诉你一个好的消息,memcached就这么简单,你已经能够使用啦,如果感兴趣,那么在AMemcached.cache的后面加点,看看这个类库里面还有那些关于增删改查重载的好方法。如果你还想再进一步了解,那么继续往下看。
细品 .NET Memcached.ClientLibrary
1、说说memcached分布式缓存的设置与应用

string[] servers = { "172.18.5.66:11211", "192.168.10.121:11211" };
//初始化池
SockIOPool pool = SockIOPool.GetInstance();
//设置服务器列表
pool.SetServers(servers);
//各服务器之间负载均衡的设置比例
pool.SetWeights(new int[] { 1, 10 });

Note:
1、在172.18.5.66,与192.168.10.121两台机器上装memcached服务端。
2、 pool.SetWeights这里的1跟10意思是,负载均衡比例,假如11000条数据,大致数据分布为:172.18.5.66分布1000条数据左右。另外一台为10000条左右。
3、memcached服务端并不具备负载均衡的能力,而是memcachedClient实现的,具体存取数据实现的核心是采用一致性Hash算法,把key-value分布到某一台服务器中里边。
2、说说memcached的数据压缩机制
//是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
cache.EnableCompression = false;
//压缩设置,超过指定大小的都压缩
//cache.CompressionThreshold = 1024 * 1024;
Note:
1、这个处理是在MemcachedClient对象中,设置这个EnableCompression属性,是否使用压缩的意思,如果启用啦压缩功能 ,则ICSharpCode.SharpZipLib类库会在数据超过预设大小时,进行数据压缩处理。
2、CompressionThreshold这个属性是压缩的阀值,默认是15K,如果超过设定的阀值则使用memcached的通讯协议,存数据时给每个数据项分配一个16为的flag表示,用作记录是否有压缩,如果有压缩则提取数据是进行解压。如果没有超过阀值则不压缩,直接存储。
3、说说怎么使用客户端多个SocketIO池

class AMemcached
{
public MemcachedClient cache;
public AMemcached(string poolName)
{
string[] servers = { "172.18.5.66:11211", "192.168.10.121:11211" };
//初始化池
SockIOPool pool = SockIOPool.GetInstance(poolName);
//设置服务器列表
pool.SetServers(servers);
//各服务器之间负载均衡的设置比例
pool.SetWeights(new int[] { 1, 10 });
//初始化时创建连接数
pool.InitConnections = 3;
//最小连接数
pool.MinConnections = 3;
//最大连接数
pool.MaxConnections = 5;
//连接的最大空闲时间,下面设置为6个小时(单位ms),超过这个设置时间,连接会被释放掉
pool.MaxIdle = 1000 * 60 * 60 * 6;
//socket连接的超时时间,下面设置表示不超时(单位ms),即一直保持链接状态
pool.SocketConnectTimeout = 0;
//通讯的超时时间,下面设置为3秒(单位ms),.Net版本没有实现
pool.SocketTimeout = 1000 * 3;
//维护线程的间隔激活时间,下面设置为30秒(单位s),设置为0时表示不启用维护线程
pool.MaintenanceSleep = 30;
//设置SocktIO池的故障标志
pool.Failover = true;
//是否对TCP/IP通讯使用nalgle算法,.net版本没有实现
pool.Nagle = false;
//socket单次任务的最大时间(单位ms),超过这个时间socket会被强行中端掉,当前任务失败。
pool.MaxBusy = 1000 * 10;
// 初始化一些值并与MemcachedServer段建立连接
pool.Initialize();
cache = new MemcachedClient();
//是否启用压缩数据:如果启用了压缩,数据压缩长于门槛的数据将被储存在压缩的形式
cache.EnableCompression = false;
//压缩设置,超过指定大小的都压缩
//cache.CompressionThreshold = 1024 * 1024;
//指定客户端访问的SockIO池
cache.PoolName = poolName;
} }
class Program
{
static void Main(string[] args)
{
//存入key为a,value为123的一个缓存
new AMemcached("me").cache.Add("b", 123);
//读出key为a的缓存值
var s = new AMemcached("me").cache.Get("b");
//输出
Console.WriteLine(s);
Console.ReadKey();
}
}

Note:使用SocketIoPool的场景,假如你的系统中用到A,B两台机器memcached的缓存数据,而A,B是不相关的,没有数据互通共享,那么这个时候你就可以根据设置poolName来处理读写那台机器。而不用多处,重复配置客户端的各种参数。
4、说说memcached的故障转移处理
//设置SocktIO池的故障标志
pool.Failover = true;
Note:memcached的鼓掌转移是一套正常节点发生故障变为死节点时的处理机制。
1、开启故障转移:如果发生socket异常,则该节点被添加到存放死节点属性的_hostDead中,新请求被映射到dead server,检测尝试连接死节点的时间间隔属性_hostDeadDuration(默认设置为100ms),如果没有达到设定的间隔时间则key会被映射到可用的server处理,如果达到了时间间隔,则尝试重新链接,连接成功将此节点从_hostDead中去除,连接失败则间隔时间翻倍存放,下次重新连接时间会被拉长。
2、不开启故障转移:新的请求都会被映射到dead server上,尝试重新建立socket链接,如果连接失败,返回null或者操作失败。
5、说说key-value中的key与value
1、key在服务端的长度限制为250个字符,建议使用较短的key但不要重复。
2、value的大小限制为1mb,如果大拉,可以使用压缩,如果还大,那可能拆分到多个key中。
memcached安装及.NET中的Memcached.ClientLibrary使用的更多相关文章
- memcached安装及.NET中的Memcached.ClientLibrary使用详解
序言 吹吹牛逼先,借我你的20分钟,保证你在.net中使用memcached缓存数据,畅通无阻,提升数据读取效率,分担数据库压力,便不在话下. 本篇主要说下:memcached分布式缓存的负载均衡配置 ...
- C#:memcached安装及.NET中的Memcached.ClientLibrary使用详解
memcached分布式缓存的负载均衡配置比例,数据压缩,socket的详细配置等,以及在.net中的常用方法. 下载地址:http://pan.baidu.com/s/1yVILw 提取 ...
- window + php + memcached 安装
第一步:安装windows版memcached 下载地址:http://download.csdn.net/detail/zhaotengfei36520/8182503#comment 下载之后将文 ...
- 初学Memcached安装及使用(CentOS7)
1.yum install memcached安装memecached 2.chkconfig memcached on设置memcached开机启动 3.service memcached star ...
- 初学Memcached安装及使用【转】
1.yum install memcached安装memecached 2.chkconfig memcached on设置memcached开机启动 3.service memcached star ...
- NET中的Memcached.ClientLibrary使用详解
memcached在windows下的下载与安装 下载地址:http://pan.baidu.com/s/1yVILw 提取密码:5gx9 官方网站:http://memcached.or ...
- memcached 安装以及在php中使用
最近做的一个项目需要不断对数据库内容进行读取和刷新,所以数据库压力很大,用户数目多的时候响应速度也严重受影响. 于是准备将一部分常用数据通过缓存在服务器内存中,减少对数据库的操作来缓解压力(memca ...
- windows操作系统中安装、启动和卸载memcached
今天总结一下如何在Windows操作系统中安装.启动和卸载memcached:下载地址: http://download.csdn.net/download/wangshuxuncom/8249501 ...
- ubuntu14中 memcached安装与使用
第一步,先安装lib-event 下载lib-event 的包http://libevent.org/ 下载完之后,解压安装 ./configure –prefix=/usr (或 ./config ...
随机推荐
- 【OpenCV-Python】-图像形态学转化
原文为段立辉翻译,感谢Linux公社此文档为自学转述,如有侵权请联系本人. 目标: • 学习不同的形态学操作,例如腐蚀,膨胀,开运算,闭运算等 • 学习的函数有:cv2.erode(),cv2.dil ...
- AngularJs学习笔记--unit-testing
原版地址:http://docs.angularjs.org/guide/dev_guide.unit-testing javascript是一门动态类型语言,这给她带来了很强的表现能力,但同时也使编 ...
- Orcale 之基本术语一
数据字典 数据字典是 Orcale 的重要组成部分.它有一系列的拥有数据库元数据信息的数据字典表和用户可以读取的数据字典视图组成,存放着数据库的有关信息.因此数据字典可以看作一组表和试图的集合.它们存 ...
- HTML5离线资源缓存简介
cache manifest 示例 要使用离线资源缓存,开发者首先要提供一个 cache manifest 文件 它列出了所有需要在离线状态下使用的资源,浏览器会把这些资源缓存到本地 下面就是一个 c ...
- 记一个bug的排查过程---复盘
公众号做了新需求:菜单的click事件,支持多条客服消息. 上线后,只有一个功能不好使,是点击菜单,预期发一条文本类型的客服消息. 实际操作时,点这个菜单项后,什么也没有发生. elk上看日志,也没有 ...
- PostgreSQL PARTITION 分区表
PostgreSQL 分区表,操作性相当便捷. 但只能在创建时决定是否为分区表,并决定分区条件字段,普通表创建后,不能在修改为分区表. Note:通过其他方法也可转化为分区表. 和其他数据库一样,分区 ...
- 开启停止wifi热点bat脚本
@echo offcolor 2title 启停无线WIFI echo 启动WIFI=======>按1键 echo ...
- Nodejs 8.0 踩坑经验汇总
.Linq:Linq to sql 类 高度集成化的数据库访问技术 使用Linq是应该注意的问题: 1.创建Linq连接后生成的dbml文件不要变动,生成的表不要碰,拖动表也会造成数据库连接发生变动, ...
- Grunt项目构建-插件学习
听说过Grunt也有两年了,用了也有两年了,然而都是在别人搭好的架子上做开发,当想要对前端工程化整体把控时就一脸懵逼了! Grunt是什么? Grunt是一套web前端工程化构建工具.(ps:关于Gr ...
- Centos7 redis 5.0 服务设置、启动、停止、开机启动
redis 没有配置服务,没有开启动,每次都要手工配置. 解决这个麻烦,我们new一个服务,然后开机启动即可. 1.创建服务(redis.conf 配置文件要注意,经过cp产生了很多个redis.co ...