早上接到一个任务,需要对Linux服务器的Memcached的update操作进行性能测试,我发现我是一个典型的“手里拿着锤子,就把所有问题都当成钉子”的人。我第一个念头就是,上Memcached的官网找.NET的客户端。最后在Codeplex上找到了一个叫Memcached Providers的客户端程序,很小,218K,里面就3个DLL,一个是Memcached Providers本身的DLL,还有一个是Enyim.Caching,Enyim.Caching也是一个.NET平台上的Memcached客户端,最后就是著名的log4net。

Memcached Providers的配置很方便,首先就是在.NET项目中引用上述提到的3个DLL文件,然后就需要修改项目的配置文件,如果是桌面程序,就修改APP.CONFIG,如果是WEB程序,就修改WEB.CONFIG。

首先在configSections节点下增加如下配置:

<section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection, MemcachedProviders"
allowDefinition="MachineToApplication" restartOnExternalChanges="true"/>
<sectionGroup name="enyim.com">
<section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

接着在configuration节点下增加Enyim的配置节点:

<enyim.com>
<memcached>
<servers>
<!-- put your own server(s) here-->
<add address="10.60.0.105" port="19191" />
</servers>
<socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
</memcached>
</enyim.com>

最后就是在configuration节点下增加Log4net的配置节点:

<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}]- %message%newline" />
</layout>
</appender>
<root>
<priority value="WARN"/>
<appender-ref ref="ConsoleAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN"/>
<levelMax value="FATAL"/>
</filter>
</appender-ref>
</root>
</log4net>

最后做一个简单的测试:

TestMethod]
public void TestMethod1()
{
string key = "mykey";
string value = "Success!!!";
DistCache.Add(key, value); //存数据
Thread.Sleep(500);
string ret = (string)DistCache.Get(key); //读数据
Assert.AreEqual(value, ret); //验证
}

整个过程下来比较顺利,基本没有遇到问题,这一切准备完毕以后就可以进入测试了。PHP,JAVA,Python等程序语言的Memcached客户端是比较多的,而.NET平台的客户端却只有2、3个,如果打算在.NET程序中使用Memcached,Memcached Providers也是一个不错的选择。

最新文章

  1. 【腾讯Bugly干货分享】动态链接库加载原理及HotFix方案介绍
  2. iOS程序 防止动态调试和代码注入
  3. 根据Excel的内容和word模板生成对应的word文档
  4. javascript学习教程之---如何从一个tab切换到banner幻灯片的转换
  5. 【转】unity3d的常用快捷键
  6. python模块介绍- xlwt 创建xls文件(excel)
  7. 权限认证 cookie VS token
  8. Python中dunder名称的来历
  9. 【Linux】常用命令,持续更新
  10. day14 集合与函数
  11. 《HelloGitHub月刊》第 02 期
  12. java实现 排序算法(鸡尾酒排序&amp;选择排序&amp;插入排序&amp;二分插入排序)
  13. 通过url传递参数如果汉字乱码采用的方法
  14. 主席树||可持久化线段树||BZOJ 3524: [Poi2014]Couriers||BZOJ 2223: [Coci 2009]PATULJCI||Luogu P3567 [POI2014]KUR-Couriers
  15. 【H5】复制粘贴
  16. C# httpRequest Soap请求
  17. 〖Android〗超级终端/sdcard/local_profile备份
  18. windows Maven3.0 服务器配置搭建
  19. Java之IO(十一)BufferedReader和BufferedWriter
  20. soap,socket

热门文章

  1. centos 6.4 安装php-fpm 及常用扩展,(转)
  2. source和.命令的区别
  3. jquery图片无缝滚动代码左右 上下无缝滚动图片
  4. off() 方法 与 unbind() 方法移除绑定事件的处理程序。one()函数用于为每个匹配元素的一个或多个事件绑定一次性事件处理函数
  5. php之面向对象(1)
  6. Oracle Database does not provide any supplemental logging, which means that by default LogMiner is not usable
  7. chrome extension/plugin path
  8. DOS系统里,分屏显示目录的命令是什么??
  9. poj 3667 Hotel (线段树)
  10. Linux数组array基础