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

Memcached基于一个存储键/值对的hashmap。其守护进程(daemon
)是用C写的。可是client能够用不论什么语言来编写,并通过memcached协议与守护进程通信。

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

1.准备工作.

要在项目中使用到Memcached,须要准备好例如以下条件:

server环境:安装Memcached服务到server上

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

分布式缓存系统Memcached在Asp.net下的应用的更多相关文章

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

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

  2. 分布式缓存系统 Memcached 整体架构

    分布式缓存系统 Memcached整体架构 Memcached经验分享[架构方向] Memcached 及 Redis 架构分析和比较

  3. 分布式缓存系统Memcached简介与以及在.net下的实践(转)

    缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...

  4. 分布式缓存系统Memcached简介与实践

    缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...

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

    缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵 ...

  6. (转)C# 中使用分布式缓存系统Memcached

    转自:http://blog.csdn.net/devgis/article/details/8212917 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了 ...

  7. 高性能缓存系统Memcached在ASP.NET MVC中应用

    在Memcached中实体类型未经序列化不能在Memcached中缓存,因此需要对实体类进行处理,才能缓存下来. Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库 ...

  8. php分布式缓存系统 Memcached 入门

    Memcached 是一个分布式的缓存系统, 但是 Memcachd 到底是什么意思,有什么作用呢?缓存一般用来保存一些经常被存取的数据和资源(例如:浏览器会将访问过的网页会话缓存起来),因为通过缓存 ...

  9. 分布式缓存系统Memcached[分享]

    个人网站:http://www.51pansou.com memcached视频下载:memcached视频教程 memcached源码下载:memcached源码 Memcached是什么? Mem ...

随机推荐

  1. UESTC - 594 我要长高

    他们oj挂掉啦, 我先保存一下代码... 直接dp复杂度, n * 100 * 100, 我们可以将前一个人的信息丢进单调队列中去,可以优化成n * 100; #include<bits/std ...

  2. linux中shell,awk,sed截取字符串方法总结

    转自:http://www.cnblogs.com/kinga/p/5772566.html Shell 第一种: ${parameter%word} 最小限度从后面截掉word${parameter ...

  3. Html5游戏开发攻略(免费的音乐面包篇)

    这一篇我们来尝尝免费的面包,至少目前是这样的. QQ音乐相信大家或多或少都使用过,里面的音乐资源非常多. 这个时候你可能就明白了,没错,我们要在游戏中使用QQ音乐的资源当背景音乐~~~~~哦耶~! 咳 ...

  4. express增加swagger功能

    参考地址:https://blog.csdn.net/freeboy1234/article/details/79289486 下载swagger ui库 地址是:https://github.com ...

  5. php中empty和isset函数

    函数使用格式 empty bool empty ( mixed $var ) 判断变量是否为空. isset bool isset ( mixed $var [ , mixed $... ] ) 判断 ...

  6. 【mysql】当where后接字符串,查询时会发生什么?

    好久没有研究一个“深层次”的问题了. 首先来看我们为什么要讨论这个问题~ 首先这是一个正常的数据库查询,我们可以看到在ruizhi数据库里的chouka表内,所有数据如图. 现在,我们运行查询: se ...

  7. CodeForces - 612C Replace To Make Regular Bracket Sequence 压栈

    C. Replace To Make Regular Bracket Sequence time limit per test 1 second memory limit per test 256 m ...

  8. Java 集合Collection——初学者参考,高手慎入(未完待续)

    1.集合简介和例子 Collection,集合.和数学定义中的集合类似,把很多元素放在一个容器中,方便我们存放结果/查找等操作. Collection集合实际上是很多形式集合的一个抽象. 例如十九大就 ...

  9. python语法(一)

    Python是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.在近几年,大数据,人工智能火起来之后也是水涨船高,被越来越多的人知道,并且越来越多 ...

  10. [BZOJ4820][SDOI2017]硬币游戏(高斯消元+KMP)

    比较神的一道题,正解比较难以理解. 首先不难得出一个(nm)^3的算法,对所有串建AC自动机,将在每个点停止的概率作为未知数做高斯消元即可. 可以证明,AC自动机上所有不是模式串终止节点的点可以看成一 ...