[转载]第二节 Memcached之MemcachedProviders(Enyim)客户端使用及测试

[转载]第二节 Memcached之MemcachedProviders(Enyim)客户端使用及测试 – 小城岁月 – 博客园.

本节探讨问题:

  • MemcachedProviders简单介绍
  • MemcachedProviders如何配置使用
  • MemcachedProviders命中率测试

MemcachedProviders是对Enyim.Caching的再次封装,并加入了客户端计数器功能以及Session数据库管理功能。上一节已 经提供了下载链接,需要下载的朋友到前一节下载。Enyim也是应用比较广泛的Memcached .net客户端,和之前的Memchachedonet 客户端相比,分布式算法应该做了相应优化(具体可参照第一节的原理环节查看),这一点我们在后面的测试环节做一下验证。我们先来看一下Enyim的基本业 务类图

以上为Enyim的基本业务类,开发中可直接使用MemcachedClient类+配置文件 完成基本的存取删除业务。其中ServerPool从配置文件读取服务器列表维护到MemCachedNode中,并且可以标记出哪些处于活动,哪些停止 响应的服务器从而方便客户端快速找到可以正常使用的服务器。在Operation类中,可以看到Enyim已经使用了二进制协议。

二、MemcachedProviders如何配置使用

如果喜欢简洁的可以直接使用Enyim.Caching开发,我们这里使用对Enyim.Caching再次封装的MemcachedProviders,因为他用来显示的更简洁。

简单的列一下MemcachedProviders 的几个基本类

DistCache 直接CURD的数据的静态类

MemcachedCacheProvider 策略模式提供的给DistCache的业务类

CacheProviderSection 缓存配置文件节点类

上图显示了MemcachedProviders的基本业务流程,我们在使用DistCache时,他首先会从配置文件找到对应的缓存策略 Providers,MemcachedCachedProvider是实现了计数器功能的一个策略,当然你也可以继承CacheProviders重写 一个策略类,而该类只需要实现MemcachedClient就可实现基本的业务。MemcachedClient被实现的时候,会实现默认的 ServerPool 去读取Enyim节点的服务器配置信息。很简单吧,那我们就开始测试环节的工作了。

三、MemcachedProviders命中率测试

MemcachedProviders源码是GIT上载的,GIT的项目基本上都是SVN搭建的,解压后会看到Branches(项目分支),Tags(里程),Trunk(项目主线)

我直接选了主版本Trunk的源码解决方案,新建设了一个Demo测试项目。

开始工作前我们参照上节,分别用MemcaheD Manager在3台服务器上搭了Memcached服务端

测试代码同上节一样,100条记录存取,分别3,4,5服务器测试。

View Code

配置文件先设置3台服务器

View Code

测试结果1:

MemcacheD Manager结果:

测试2:MemcacheD Manager清空所有服务器数据,在增加一台服务器继续测试,代码部分相同

配置文件:

View Code

测试结果2:

测试3:再增加至5台Server

配置文件:

View Code

测试结果:

看下工具的结果:

3次测试结果,100条记录分布在不同的Server上,Hit 100% MISS 0次。结果还是很理想的,看来Enyim改进的算法还是很优秀的,加上配置化,计数器等功能总体上优于Memcachedonet。

我们来看下MemcachedProviders计数器结果:

好了,这一节就到这里了。

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏