设为首页 收藏本站
查看: 1302|回复: 0

[经验分享] .NET分布式缓存Memcached测试体验

[复制链接]

尚未签到

发表于 2015-8-31 13:27:47 | 显示全部楼层 |阅读模式
  一直在学习关注大访问量网站的缓存是如何实现,之前看过Memcached的资料,忙于没有时间来真正测试一下,今天测试下分布式缓存Memcached
首先要在缓存服务器上安装安装:memcached(1.2.6 for Win32)
测试程序部署到本地环境,开发工具VS2008 .NET3.5
使用到memcached 1.2.6 for Win32下载地址:
memcached-1.2.6-win32-bin.zip
  好了,下面我们按步骤来测试:
第一、首先到把下载好的memcached 1.2.6解压到C:\memcached目录,分别复制到两台服务器中。
第二、安装memcached服务,在命令提示符输入CD c:\memcached进入到memcached目录,如下图:
DSC0000.jpg
  之后输入memcached -h 回车,看帮助说明,接下来输入memcached -d install 回车即可自动安装
  memcached服务了,如下图:
DSC0001.jpg
  安装好安装memcached服务后,输入memcached -d start 回车启动memcached服务,如下图:
DSC0002.jpg
  在两台电脑都按以上操作来安装启动memcached。
第三、下载.NET版memcached客户端API组件来写测试程序。
使用memcacheddotnet,下载地址如下:
http://sourceforge.net/projects/memcacheddotnet/
下载好之后把这些文件Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,
  Memcached.ClientLibrary.dll放到bin目录(少一个都不行),之后再到测试项目开发环境引用
  Memcached.ClientLibrary.dll,如下图
DSC0003.jpg
  第四、测试程序:
Memcached.cs
--------------------------------------


  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using Memcached.ClientLibrary;
  6 using System.Collections;
  7
  8 namespace Test {
  9   public partial class Memcached {
10     private static Memcached _instance = new Memcached();
11     public static Memcached _ {
12       get {
13         return _instance;
14       }
15     }
16
17     string[] servers = { "192.168.1.10:11211","192.168.1.11:11211" };
18     SockIOPool pool;
19     MemcachedClient mc;
20
21     public Memcached() {
22       //初始化池
23       pool = SockIOPool.GetInstance();
24       pool.SetServers(servers);
25
26       pool.InitConnections = 3;
27       pool.MinConnections = 3;
28       pool.MaxConnections = 1000;
29
30       pool.SocketConnectTimeout = 1000;
31       pool.SocketTimeout = 3000;
32
33       pool.MaintenanceSleep = 30;
34       pool.Failover = true;
35
36       pool.Nagle = false;
37       pool.Initialize();
38
39       mc = new MemcachedClient();
40       mc.EnableCompression = false;
41     }
42
43     public void Remove(string key) {
44       mc.Delete(key);
45     }
46
47     public bool Set(string key, object value) {
48       return mc.Set(key, value);
49     }
50
51     public bool Set(string key, object value, int minute) {
52       return mc.Set(key, value, DateTime.Now.AddMinutes(minute));
53     }
54
55     public Hashtable Stats() {
56       return mc.Stats();
57     }
58
59     public object Get(string key) {
60       return mc.Get(key);
61     }
62
63     public bool ContainsKey(string key) {
64       return mc.KeyExists(key);
65     }
66   }
67   public class MemcachedTest {
68     /// <summary>
69     /// 测试缓存
70     /// </summary>
71     public void test() {
72       //写入缓存
73       Console.WriteLine("写入缓存测试:");
74       Console.WriteLine("_______________________________________");
75       if (Memcached._.ContainsKey("cache")) {
76         Console.WriteLine("缓存cache已存在");
77       }
78       else {
79         Memcached._.Set("cache", "写入缓存时间:" + DateTime.Now.ToString());
80         Console.WriteLine("缓存已成功写入到cache");
81       }
82       Console.WriteLine("_______________________________________");
83       Console.WriteLine("读取缓存内容如下:");
84       Console.WriteLine(Memcached._.Get("cache").ToString());
85
86       //测试缓存过期
87       Console.WriteLine("_______________________________________");
88       if (Memcached._.ContainsKey("endCache")) {
89         Console.WriteLine("缓存endCache已存在,过期时间为:" + Memcached._.Get
90
91 ("endCache").ToString());
92       }
93       else {
94         Memcached._.Set("endCache", DateTime.Now.AddMinutes(1).ToString(), 1);
95         Console.WriteLine("缓存已更新写入到endCache");
96      Console.WriteLine("写入时间:" + DateTime.Now.ToString());
97      Console.WriteLine("过期时间:" + DateTime.Now.AddMinutes(1).ToString());
98       }
99
100       //分析缓存状态
101       Hashtable ht = Memcached._.Stats();
102       Console.WriteLine("_______________________________________");
103
104       Console.WriteLine("Memcached Stats:");
105       Console.WriteLine("_______________________________________");
106       foreach (DictionaryEntry de in ht) {
107         Hashtable info = (Hashtable)de.Value;
108         foreach (DictionaryEntry de2 in info) {
109           Console.WriteLine(de2.Key.ToString() + ":" + de2.Value.ToString() + " ");
110         }
111       }
112     }
113   }
114 }
115   Program.cs
--------------------------------------


1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.IO;
6
7 namespace Test {
8   class Program {
9     static void Main(string[] args) {
10       MemcachedTest mt = new MemcachedTest();
11       mt.test();
12       Console.ReadLine();
13     }
14   }
15 }  首次执行效果图:
DSC0004.jpg
  第二次便从缓存中读取:
DSC0005.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-106840-1-1.html 上篇帖子: memcached与.NET的融合使用(二) 下篇帖子: Memcached 在windows下的java使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表