全面解析windows下Memcache技术应用

原文  http://www.cnblogs.com/liuqin520/p/4615644.html

一、Memcache介绍

Memcache 是 danga.com 的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。它可以应对任意多个连接,使用非阻塞的网络 IO 。由于它的工作机制是在内存中开辟一块空间,然后建立一个 HashTable , Memcached 自管理这些 HashTable 。Memcache是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高 可扩展性。Memcache 官方网站: http://www.danga.com/memcached。

二、Memcache安装

安装包里面会有x64和x86两个文件夹,根据操作系统选择一个打开会找到memcached.exe。这个文件不能直接双击运行安装,需要通过cmd进行安装。 

cmd命令:Memcache –d start|stop|shutdown|restart|uninstall|install 启动|停止|关闭|重启|卸载|安装。

安装步骤:1.找到文件memcache.exe路径;

2.memcache –d install安装完毕; 

3.启动服务后windows进程中可以看到memcache.exe;

4.服务器安装完成后,我们可以通过telnet到服务器测试一下(如果提示telnet命令不存在,需要去控制面板开启windows的 telnet服务功能) 例如:                       10.0.27.120是安装memcache服务的ip地址,11211是默认的端口。输入stats查看参数信息。

到此memcache的安装全部完成。

三、Memcache在程序中的应用

在解决方案中新建memcache的类库,引用以下几个类 库,Commons.dll,Memcached.ClientLibrary.dll,ICSharpCode.SharpZipLib.dll。新建 MemcacheHelper.cs这个memcache的使用类。准备工作做完之后开始进入memcache的使用。

1.在web.config里面配置memcache的服务器地址

<appSettings>

<!--memcache的服务器配置,IP地址后期再改,端口号固定为11211--><add key="Memcached.ServerList" value="10.3.2.24:11211"/>

<appSettings>

2.在MemcacheHelper.cs类里面编写实现代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Memcached.ClientLibrary;
using System.Data;
using System.Configuration;
using NLP.Common;
namespace NLP.Memcache
{
  public class MemcacheHelper
  {
    #region 全局静态对象
    // 全局Socket连接池对象
    private static SockIOPool sockIOPool;
    public static SockIOPool CurrentPool
    {
      get
      {
        return sockIOPool;
      }
    }
    // 全局Memcached客户端对象
    private static MemcachedClient mc;
    #endregion
    public static bool MemcacheHelperInit()
    {
      try
      {
        // 初始化Memcached服务器列表
        string[] serverList = ConfigurationManager.AppSettings["Memcached.ServerList"].Split(‘,‘);
        // 初始化Socket连接池
        sockIOPool = SockIOPool.GetInstance("MemPool");
        sockIOPool.SetServers(serverList);
        sockIOPool.Initialize();
        // 初始化Memcached客户端
        mc = new MemcachedClient();
        mc.PoolName = "MemPool";
        mc.EnableCompression = false;
        return true;
      }
      catch (Exception ex)
      {
        return false;
      }
    }
    /// <summary>
    /// 判断pkey关键字是否在Pmc中
    /// </summary>
    /// <param name="pMC"></param>
    /// <param name="pKey"></param>
    /// <returns></returns>
    public static bool IsCache(string pKey)
    {
      if (MemcacheHelperInit())
      {
        if (mc.KeyExists(pKey))
        {
          return true;
        }
        else
        {
          return false;
        }
      }
      else
      {
        return false;
      }
    }
    /// <summary>
    /// 删掉Memcache 数据
    /// </summary>
    /// <param name="key"> </param>
    /// <returns></returns>
    public static bool RemoveCache(string pKey)
    {
      if (MemcacheHelperInit())
      {
        if (!mc.KeyExists(pKey))
        {
          return false;
        }
        else
        {
          return mc.Delete(pKey);
        }
      }
      else
      {
        return false;
      }
    }
    /// <summary>
    /// Set-新增或修改
    /// </summary>
    /// <param name="key">键</param>
    /// <param name="value">值</param>
    /// <returns>是否成功</returns>
    public static bool AddCache(string key, object value)
    {
      if (MemcacheHelperInit())
      {
        if (!mc.KeyExists(key))
        {
          return mc.Add(key, value);
        }
        else
        {
          return mc.Set(key, value);
        }
      }
      else
      {
        return false;
      }
    }
    /// <summary>
    /// Set-新增或修改
    /// </summary>
    /// <param name="key">键</param>
    /// <param name="value">值</param>
    /// <param name="expiry">过期时间</param>
    /// <returns>是否成功</returns>
    public static bool AddCache(string key, object value, DateTime expiry)
    {
      if (MemcacheHelperInit())
      {
        if (!mc.KeyExists(key))
        {
          return mc.Add(key, value, expiry);
        }
        else
        {
          return mc.Set(key, value, expiry);
        }
      }
      else
      {
        return false;
      }
    }
    /// <summary>
    /// 根据单个key值获取Memcache 数据
    /// </summary>
    /// <param name="key"></param>
    /// <returns></returns>
    public static object GetCache(string key)
    {
      if (MemcacheHelperInit())
      {
        if (!mc.KeyExists(key))
        {
          return null;
        }
        else
        {
          return mc.Get(key);
        }
      }
      else
      {
        return false;
      }
    }
    /// <summary>
    /// 根据多个key值获取Memcache 数据
    /// </summary>
    /// <param name="key"> </param>
    /// <returns></returns>
    public static Dictionary<string, object> GetCache(string[] keys)
    {
      Dictionary<string, object> dic = new Dictionary<string, object>();
      if (MemcacheHelperInit())
      {
        foreach (string key in keys)
        {
          object obj = mc.Get(key);
          if (!dic.ContainsKey(key) && obj != null)
            dic.Add(key, obj);
        }
        return dic;
      }
      else
      {
        return null;
      }
    }
  }
}

3.在调用代码里面调用 MemcacheHelper.cs的memcache方法

如bool result= MemcacheHelper.AddCache("User","123456");//实现新增key位User,value值为123456的memcache

//获取memcache中value值,为json格式string ob_json = MemcacheHelper.GetCache("User").ToString();

这样就实现了memcache的新增、查询的完整应用。

时间: 2024-10-31 04:17:43

全面解析windows下Memcache技术应用的相关文章

Windows下MemCache多端口安装配置

Windows下MemCache环境安装配置的文章很多,但大部分都是用的默认端口11211,如何修改默认端口.如何在一台服务器上配置多个MemCache端口?这正式本文要解决的问题. 1.从微软官网下载rktools.exe (安装只为得到两个exe程序,可以先检查步骤2中的程序文件是否存在.如果不存在,也可以从其它服务器上复制相应的文件到相应目录下.可以直接跳过此步),然后进行安装.     下载地址:http://www.microsoft.com/downloads/details.asp

Windows下memcache安装使用

Windows下Memcache安装 随着时间的推移,网上现在能找到的在 Windows下安装 Memcache 的文档大多已经过时.雪峰这里再简要介绍一下当下最新版的安装和配置方法. Memcached 在其官网是不断更新的,可惜只有源码,没有 windows 编译版. http://memcached.org/ 找到当下最新的 Windows 编译版,在 http://code.jellycan.com/memcached/ 找到 win32 binary: memcached-1.2.6-

windows下memcache的安装总结

一.memcache软件的安装: 1.下载memcache的windows版本,把memcached.exe放在F:盘符,(memcached.exe文件位置不可变动). 2.进入cmd命令终端,进入到F:盘符. 3.memcached.exe -d install 命令进行memcache的安装. 4.memcached.exe -d start 命令进行memcache的开机自动启动. 5.软件安装完成. 二.PHP扩展的配置: 1.下载 php_memcache.dll 扩展文件:http

Windows下Memcache的安装及PHP扩展配置

一.下载 找到完整的memcache的Windows安装包,解压放在硬盘上,比如 F:\memcached.exe 二.安装 WIN7 64位双击打开这个exe可能只有一个空的窗口,不能输入任何命令,所以这个exe不是这样用的.要运行cmd控制台,输入 F:\memcached.exe -d install 安装,再输入 F:\memcached.exe -d start 启动. Tips:如果没有报错信息,则至此memcached已经安装并启动,而且默认是开机自动启动的 三.PHP扩展下载及版

WIndows下Anti-sanboxes技术探究

由于云端杀毒的流行,病毒基本上都会加上anti-sandboxes手段来躲避沙箱的探测,在这点上,由于一些原因,最近也一直在做这一块,所以算是总结一下吧. 一:什么是沙箱以及其他: 根据受控环境中的观察行为确定文件是否恶意.沙箱允许恶意软件执行所有恶意??操作,并记录生成的行为.过了一段时间后,分析停止,检查结果并扫描典型的恶意行为模式.基于行为的恶意软件检测仅在观察文件在其分析期间实际执行恶意操作时有效.如果 - 无论什么原因 - 在分析过程中都没有执行有害的操作,则沙箱得出结论:被检查的文件

Go语言配置文件解析器,类似于Windows下的INI文件.

config Package config is a Configuration file parser for INI format 包 config 是一个简洁方的,支持注释的Go语言配置文件解析器,类似于Windows下的INI文件. 配置文件形式为[section] 的段构成, 内部使用 name=value键值对 如果为指定段节点,则默认放入名为[default]的段当中. "#"为注释的开头,可以放置于任意的单独一行中. 安装 go get github.com/lxmgo

windows下的php的memcache扩展的安装及memcache最新下载地址

windows下的php的memcache扩展的安装及memcache最新下载地址 memcached for Windows下载地址.(memcached本身并没有windows版本)如果上面下载不了,可以去:http://splinedancer.com/memcached-win32/  下载最新的windows版memcache的文件: Windows下的Memcache安装:1. 下载好memcached后,解压放某个盘下面,比如在c:\memcached2. 在终端(也即cmd命令界

memcache的windows下的安装和简单使用

原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcache缺点之一却是缺少安全性验证,所以一般而言我们都会把一些访问量大,但是不需要验证的数据放在这里,需要用的时候来这里取,就给数据库减少了很多的负担.一般而言设定个更新时间就好了,1个小时左右更新一次. windows下安装和测试memcache最为方便,Linux只是需要相应的编译包就行了,需要包括m

Windows下Wamp装不上Memcache扩展

windows下wamp装不上memcache扩展2015.03.20 No Comments 1,243 views用的是WAMP集成包,PHP版本5.5.12http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/下载Mamcache 4个压缩文件 测试有一个可以集成启动wamp不报错但在WAMP中PHP中显示叹号无加载.后翻阅资料发现 wamp 加载PHP.ini 在 bin/apache/apache2.4.9/bin/