一直在学习关注大访问量网站的缓存是如何实现,之前看过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目录,如下图:

之后输入memcached -h 回车,看帮助说明,接下来输入memcached -d install 回车即可自动安装

memcached服务了,如下图:

安装好安装memcached服务后,输入memcached -d start 回车启动memcached服务,如下图:

在两台电脑都按以上操作来安装启动memcached。
第三、下载.NET版memcached客户端API组件来写测试程序。
使用memcacheddotnet,下载地址如下:
http://sourceforge.net/projects/memcacheddotnet/
下载好之后把这些文件Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,

Memcached.ClientLibrary.dll放到bin目录(少一个都不行),之后再到测试项目开发环境引用

Memcached.ClientLibrary.dll,如下图

第四、测试程序:
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 }

首次执行效果图:

第二次便从缓存中读取:

转载于:https://www.cnblogs.com/tearer/archive/2010/07/27/1786364.html

.NET分布式缓存Memcached测试体验相关推荐

  1. 分布式缓存-Memcached

    分布式缓存-Memcached (2012-03-29 17:01:09)     分布式缓存出于如下考虑,首先是缓存本身的水平线性扩展问题,其次是缓存大并发下的本身的性能问题,再次避免缓存的单点故障 ...

  2. 分布式缓存memcached

    Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对数据库的访问来加速web应用程序.它是一个基于内存的"键值对"存储,用 ...

  3. ITOO4.1之缓存—分布式缓存Memcached学习(理论篇)

    1.   何为缓存?     缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找.由于缓存的运行速度比内存快 ...

  4. 企业项目开发--分布式缓存memcached(3)

    此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 3.3.ssmm0-data 结构: 3.3.1.pom.xml 1 <?xml version=&q ...

  5. 分布式缓存Memcached之Java使用篇

    一.Memcache的客户端类型: 1.   官方提供的基于传统阻塞io由Greg Whalin维护的客户端 https://github.com/gwhalin/Memcached-Java-Cli ...

  6. 分布式缓存系统Memcached简介与实践(.NET memcached client library)

    原文:分布式缓存系统Memcached简介与实践(.NET memcached client library) 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加 ...

  7. 第一节 Memcached分布式缓存入门

    关于Memcached的博文太多了,以下是个人学习的收集整理. 本节讨论问题: 简单介绍与应用 下载安装注意事项 简单测试 Memcached分布式原理 一.介绍与应用 在常规的WEB开发下,基本都会 ...

  8. .NET下实现分布式缓存系统Memcached

    [IT168 技术文档]在Web应用程序中,数据通常保存在RDBMS中,应用服务器从数据库中读取数据并在浏览器中显示.但随着数据量的增大.访问的集中,就会出现RDBMS的负载加重.数据库响应变慢.网站 ...

  9. ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存

    ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 原文:ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 ASP.Net MVC4+Memc ...

最新文章

  1. 如何在OpenStack环境中实现多Region
  2. 基于MTCNN的人脸自动对齐技术原理及其Tensorflow实现测试
  3. 计算机网络与应用测试题,计算机网络技术与应用测试题
  4. 「数据库系列一」为什么要用数据库?
  5. 实现pick和reigister
  6. Ubuntu配置静态IP
  7. C#:继承过程中的静态成员
  8. python做饼图出现重影_Matplotlib 绘制饼图解决文字重叠的方法
  9. Freemarker的基本语法及入门基础
  10. 信息学奥赛一本通 1030:计算球的体积 | OpenJudge NOI 1.3 12
  11. c#调用带有安全认证的java webservice
  12. 数据库原理—关系模型的基本概念(七)
  13. 就地链表反转_数据结构与算法系列之链表操作全集(二)(GO)
  14. 2957: 楼房重建
  15. python数据分析与挖掘实战---chapter8中医证型关联规则挖掘
  16. 华为网络设备——利用三层交换机实现VLAN间路由配置实例
  17. android 查看路由器ip,如何查看路由器ip地址进入登录页面
  18. 坐标转换—高斯正反算(附测量助理最新版软件下载)
  19. 2008服务器系统怎么备份,服务器2008系统备份
  20. 物联网开发笔记(63)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:显示中文

热门文章

  1. python做ui自动化_[python]RobotFramework自定义库实现UI自动化
  2. [力扣] 501. 二叉搜索树中的众数
  3. 计算机插座符号,插座图形符号
  4. 欢迎使用markdown编辑器20181206
  5. paddle自定义weight初始参数(parameter)
  6. 多模型融合(相当于投票)
  7. 使用bert或者xlnet做预测类的事情
  8. gan只用来生成是浪费
  9. Django—Model就是ORM的具体体现
  10. Linux学习笔记-题记