Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

站下的session性能并不高,所以造成人们一种印象,大型WEB项目使用JAVA的错觉,致使很多人吐槽微软不给力,其实这好比拉不出怪地球引力,本文介绍Memcached在ASP.net Web项目中的应用,智联招聘,招商银行,农业银行等都是采用解决方案,在性能上是绝对不亚于任何大型网站.同时Memcached还能很方便建立起服务器集群,对于大型解决方案,服务器集群的重要性不言而喻;

1.准备工作.
要在项目中使用到Memcached,需要准备好如下条件:
服务器环境:安装Memcached服务到服务器上
a.下载Memcached安装文件
b.以管理员身份运行CMD 在下载的Memcached服务安装路径下安装Memcached服务(命令行:X:\memcached.exe -d install)
C.检查服务安装

d.启动服务 命令行 memcached.exe –d start  当然可以直接在计算机服务管理来操作
到这里Memcached服务就搭建完成了,那么如何运用到.NET项目中区呢?
2.下载.NET Memcached lbr
从文件..trunk\clientlib\src\clientlib\bin\2.0\Debug下拷贝出4个DLL文件Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll,添加引用到项目中去
3.初始化Memcached

从“服务”中可以看到Memcached Server处于“正在运行”的状态中,如果是停止的,右键“启动服务”就可以了,当然可以memcached.exe –d start来启动

主要的缓存代码:

using System;
using System.Data;
using System.Web;
using Memcached.ClientLibrary; public class Cache_Info
{
private readonly static string CacheKey = "Info_key"; /// <summary>
/// 缓存是否存在
/// </summary>
/// <param name="pMC"></param>
/// <param name="pKey"></param>
/// <returns></returns>
private static bool IsCache(MemcachedClient pMC,string pKey)
{
if (pMC.KeyExists(pKey))
{
return true;
}
else
{
return false;
}
} /// <summary>
/// 覆盖缓存
/// </summary>
/// <param name="pKey"></param>
/// <param name="pObject"></param>
/// <returns></returns>
private static bool StoreCache(string pKey,object pObject)
{
MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = true;
bool _result = false;
if (IsCache(mc, pKey))
{
if (mc.Get(pKey) == null)
{
mc.Set(pKey, pObject);//缓存存在,强行覆盖
}
else
{
mc.Replace(pKey, pObject);//缓存存在,强行覆盖
}
_result = true;
}
else
{
mc.Add(pKey, pObject);//第一次加载缓存
_result = true;
}
return _result;
} /// <summary>
/// 清除缓存
/// </summary>
/// <param name="pKey"></param>
/// <returns></returns>
public static bool RemoveCache(string pKey)
{
MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = true;
return mc.Delete(pKey);
} /// <summary>
/// 获取数据
/// </summary>
/// <returns></returns>
public static DataTable GetInfo()
{
#region 通过缓存来获取DataTable的数据
MemcachedClient mc = new MemcachedClient();
mc.EnableCompression = true;
if (mc.Get(CacheKey) != null)
{
return mc.Get(CacheKey) as DataTable; //直接从缓存取数据
}
else
{
DataTable dt=DB_Info.GetInfo(); //第一次加载将数据存入缓存中
if (StoreCache(CacheKey, dt))
{
return mc.Get(CacheKey) as DataTable;
}
else
{
return null;
}
}
#endregion #region 直接从数据库获取DataTable
//return DB_Info.GetInfo();
#endregion } }

Memcached在Asp.net下的应用的更多相关文章

  1. [Memcached]分布式缓存系统Memcached在Asp.net下的应用

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  2. 分布式缓存系统Memcached在Asp.net下的应用

    Memcached 是一个高性能的分布式内存对象缓存系统.用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来降低读取数据库的次数,从而提高动态.数据库驱动站点的速度. Memcache ...

  3. ASP.NET下运用Memcached

    对于大型网站的高并发,在ASP.NET网站下的session性能并不高,所以造成人们一种印象,大型WEB项目使用JAVA的错觉,致使很多人吐槽微 软不给力,其实这好比拉不出怪地球引力,本文介绍Memc ...

  4. ASP.NET下回车键的触发效果

    在ASP.NET下,在客户端触发回车键,默认调用了页面中第一个button,这有时是非常头痛的,比如页面的第一个按键是注销键时,想想也够可怕了. .net提供设置默认回车键的属性,this.Form. ...

  5. 转发 win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案

    win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NE ...

  6. asp.net下调用Matlab生成动态链接库

    对于这次论文项目,最后在写一篇关于工程的博客,那就是在asp.net下调用matlab生成的dll动态链接库.至今关于matlab,c/c++(opencv),c#(asp.net)我总共写了4篇配置 ...

  7. asp.net下的b/s架构

    最近一直在做asp.net下的b/s架构的程序.整理一下可以采用的架构. 简单三层架构 基于接口和工厂模式的三层 前台用jquery调用http请求(ashx),ashx再调用逻辑接口 虽然很早就知道 ...

  8. asp.net下cookie 的基础使用

    cookie作为在B/S开发中经常被使用到的东西,asp.net必然提供了现成的东西给我们使用. 就是这个对象:HttpCookie,当然了,对于asp.net来说,Request和Response中 ...

  9. ASP.NET下MVC设计模式的实现

    [转载]MVC架构在Asp.net中的应用和实现 转载自:http://www.cnblogs.com/baiye7223725/archive/2007/06/07/775390.aspx 摘要:本 ...

随机推荐

  1. Logistic回归基础篇之梯度上升算法

    代码示例: import numpy as np import matplotlib.pyplot as plt def loadDataSet(): dataMat = [];labelMat = ...

  2. 【VS开发】Windows上的音频采集技术

    前一段时间接到一个任务,需要采集到声卡的输出信号,以便与麦克风的输入信号进行混音. 之前一直没有研究过音频的相关技术,这次就顺便抽出一点时间去了解了一下Windows上采集音频的相关技术. 对于音频处 ...

  3. sql回显注入-笔记

     拼接sql命令查询数据   注释 常用于sql注入            # 井号 单行注释 注意:URL编码 %23          -- 两个减号加空格 单行注释           /*   ...

  4. Websocket --(3)实现

    今天介绍另外一种websocket实现方式,结合了spring MVC,并完善了第二节所提到做一个简单的登录认证用来识别用户的名称.界面继续沿用第二节的布局样式,同时增加上线和下线功能. 参考了 ht ...

  5. [转帖]linux /proc目录下的文件为何无法用vi编辑保存

    linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...

  6. Linux 下面根据端口号 查询 可执行程序的路劲的方法

    1. 安装上lsof 的包 2. 使用 lsof 命令查看相关进程 lsof -i: 效果为: 3. 根据/proc 的目录查看可执行目录的文件位置 ll /proc/procid # procid ...

  7. Node.js 博客搭建

    Node.js 博客搭建:https://www.linuxidc.com/Linux/2017-02/140115.htm https://www.cnblogs.com/mrcln/p/93087 ...

  8. 浅谈Javascript数据属性与访问器属性

    ES5中对象的属性可以分为‘数据属性’和‘访问器属性’两种. 数据属性一般用于存储数据数值,访问器属性对应的是set/get操作,不能直接存储数据值. 数据属性特性:value.writable.en ...

  9. java实现顺序队列

    package queue; import java.util.Scanner; public class ArrayQueueLoop { public static void main(Strin ...

  10. 2019 Multi-University Training Contest 8 - 1006 - Acesrc and Travel - 树形dp

    http://acm.hdu.edu.cn/showproblem.php?pid=6662 仿照 CC B - TREE 那道题的思路写的,差不多.也是要走路径. 像这两种必须走到叶子的路径感觉是必 ...