.NET(C#)下操作Memcahed

转载 2018年01月30日 20:27:40

一:Memcached的安装

step1. 下载memcache(http://www.runoob.com/memcached/window-install-memcached.html)的windows稳定版,解压放某个盘下面,比如在c:\memcached
step2. 在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装
step3. 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。

 PS: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。

二: .NET memcached client library
下载文件:https://sourceforge.net/projects/memcacheddotnet/

   将Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll 等放到bin目录
   引用Memcached.ClientLibrary.dll

程序

using System;
using System.Collections;
using Memcached.ClientLibrary;
using System.Text;

namespace Memcache
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request["action"] == "clear")
                    this.clear();
                else
                    this.test();
            }
        }

        public void clear()
        {
            string[] servers = { "192.168.1.113:11211", "192.168.202.128:11211" };

            //初始化池
            SockIOPool pool = SockIOPool.GetInstance();
            pool.SetServers(servers);
            pool.InitConnections = 3;
            pool.MinConnections = 3;
            pool.MaxConnections = 5;
            pool.SocketConnectTimeout = 1000;
            pool.SocketTimeout = 3000;
            pool.MaintenanceSleep = 30;
            pool.Failover = true;
            pool.Nagle = false;
            pool.Initialize();
            MemcachedClient mc = new Memcached.ClientLibrary.MemcachedClient();
            mc.EnableCompression = false;
            mc.Delete("cache");
            mc.Delete("endCache");
            Response.Write("清空缓存成功");
        }


        public void test()
        {
            //分布Memcachedf服务IP 端口
            string[] servers = { "192.168.1.113:11211", "192.168.202.128:11211" };

            //初始化池
            SockIOPool pool = SockIOPool.GetInstance();
            pool.SetServers(servers);
            pool.InitConnections = 3;
            pool.MinConnections = 3;
            pool.MaxConnections = 5;
            pool.SocketConnectTimeout = 1000;
            pool.SocketTimeout = 3000;
            pool.MaintenanceSleep = 30;
            pool.Failover = true;
            pool.Nagle = false;
            pool.Initialize();
            //客户端实例
            MemcachedClient mc = new Memcached.ClientLibrary.MemcachedClient();
            mc.EnableCompression = false;
            StringBuilder sb = new StringBuilder();
            //写入缓存
            sb.AppendLine("写入缓存测试:");
            sb.AppendLine("<br>_______________________________________<br>");
            if (mc.KeyExists("cache"))
            {
                sb.AppendLine("缓存cache已存在");
            }
            else
            {
                mc.Set("cache", "写入缓存时间:" +DateTime.Now.ToString());
                sb.AppendLine("缓存已成功写入到cache");
            }
            sb.AppendLine("<br>_______________________________________<br>");
            sb.AppendLine("读取缓存内容如下:<br>");
            sb.AppendLine(mc.Get("cache").ToString());

            //测试缓存过期
            sb.AppendLine("<br>_______________________________________<br>");
            if (mc.KeyExists("endCache"))
            {
                sb.AppendLine("缓存endCache已存在,过期时间为:" +  mc.Get("endCache").ToString());
            }
            else
            {
                mc.Set("endCache", DateTime.Now.AddMinutes(1).ToString(), DateTime.Now.AddMinutes(1));
                sb.AppendLine("缓存已更新写入到endCache,写入时间:" + DateTime.Now.ToString()  +" 过期时间:" +  DateTime.Now.AddMinutes(1).ToString());
            }

            //分析缓存状态
            Hashtable ht = mc.Stats();
            sb.AppendLine("<br>_______________________________________<br>");
            sb.AppendLine("Memcached Stats:");
            sb.AppendLine("<br>_______________________________________<br>");
            foreach (DictionaryEntry de in ht)
            {
                Hashtable info = (Hashtable)de.Value;
                foreach (DictionaryEntry de2 in info)
                {
                    sb.AppendLine(de2.Key.ToString() + ":&nbsp;&nbsp;&nbsp;&nbsp;" + de2.Value.ToString() + "<br>");
                }
            }
            Response.Write(sb.ToString());
        }
    }
}

深入.NET平台和C#编程

介绍C#面向对象技术和.NET框架技术,是学习C#语言的必修课!
  • 2017年10月24日 21:19

日常总结

1.当点击前端按钮的时候他没有反应 后台控制台也没有反应的时候解决方法 按F12这样可以快速锁定是哪个文件出错了 今天我就是点击登录没有反应,后台也没有报错 最后通过这种方法发现时user.js文件出...
  • freshman____
  • freshman____
  • 2018-04-03 20:40:30
  • 9

日常问题总结

日常问题总结 遇到SDWebImage (~&amp;gt; 4.0.0)required byPodfile` 工程Target-General-Deployment Target 需要设...
  • shaokang5532
  • shaokang5532
  • 2017-11-22 11:08:59
  • 183

看过的最好的护肤心得

第一次看到这贴是在瑞丽,今天在花窝又见,真的太强了,转来和大家分享草草是80年年中的,19岁开始护肤,算算真的有6年了。老爸老妈皮肤一般,草草应该是没有所谓的天生丽质的基因,曾有过两个极端的错误护肤经...
  • zzzz2008
  • zzzz2008
  • 2006-01-17 14:01:00
  • 5851

日常问题总结 一

#堆和栈的区别 栈是编译期间就分配好的空间,因此在代码中必须就栈的大小有明确的定义。局部值类型变量、值类型参数等都在栈内存中。堆是程序运行期间动态分配的内存空间,可以根据程序的运行情况调整分配的堆内...
  • zhixin9001
  • zhixin9001
  • 2017-07-20 22:26:29
  • 58

日常学习总结

3月9日一、使用linux,并完成安装redis。./redis-server                                   port:6379,PID:35854二、安装doc...
  • u012706626
  • u012706626
  • 2018-03-12 14:42:30
  • 10

linux日常总结

对linux各种资源的操作都是通过操作文件实现的。Linux中总共有7种文件类型: 普通文件,目录,字符设备文件,块设备文件,本地域套接字,有名管道,符号链接。linux文件系统:ext3fx ...
  • wangxiaohua_147
  • wangxiaohua_147
  • 2017-03-23 09:23:59
  • 56

关于oracle数据导入导出的心得总结

我习惯用imp和exp导出和导出dmp格式,总结如下结论: imp:
  • rainyspring4540
  • rainyspring4540
  • 2014-06-21 08:18:55
  • 355

Visual C++开发中动态链接库小结

1.什么是动态链接?2.动态链接库与静态链接库区别3.动态链接库的使用
  • haimianjie2012
  • haimianjie2012
  • 2018-03-23 09:54:57
  • 21

HEX 文件

HEX转换bin心得 发表于 2009/6/26 13:01:05 近来写C8051 Boot代码,由于下载数据需要使用bin文件, 但是keil目前只能生成hex的格式,无奈之下上网...
  • jodan179
  • jodan179
  • 2012-10-17 22:53:04
  • 1365
收藏助手
不良信息举报
您举报文章:.NET(C#)下操作Memcahed
举报原因:
原因补充:

(最多只允许输入30个字)