Memcached是“分布式”的内存对象缓存系统,那么不需要“分布”的、不需要共享的或者干脆规模小到只有一台服务器的应用,Memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源,如果只是本地级缓存,使用Memcached是非常不划算的。

  Memcached在很多时候都是作为数据库前端Cache使用的。因为它比数据库少了很多SQL解析、磁盘操作等开销,而且它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能。在大型系统中,访问同样的数据是很频繁的,Memcached可以大大降低数据库压力,使系统执行效率提升。另外,Memcached也经常作为服务器之间数据共享的存储媒介。

  Memcached使用内存管理数据,所以它是易失的,当服务器重启或者Memcached进程终止,数据便会丢失,所以Memcached不能用来持久保存数据。很多人错误地理解,认为Memcached的性能非常好,好到了内存和硬盘的对比程度,其实Memcached使用的内存并不会得到成百上千的读写速度提高,它的实际瓶颈在于网络连接。它和使用磁盘的数据库系统相比,好处在于它本身非常“轻”,因为没有过多的开销和直接的读写方式,它可以轻松应付非常大的数据交换量,所以经常会出现两条千兆带宽都满负荷了,Memcached进程本身并不占用多少CPU资源的情况。

  从使用的角度来说,Memcached针对Asp.net的API就像和内置的API一样。开发人员很容易使用Memcached,仅仅通过在代码中查找和替换即可实现。

一、Memcached安装

  1、下载windows版memcached

  2、打开DOS,进入memcached.exe所在目录

  • 进入某个硬盘的命令 X:+回车 (X代表硬盘的盘符)
  • 进入某个文件夹的命令 cd+空格+文件名子
  • 退出当前文件夹的命令 cd..(就是cd后面加上两个点号再回车即可)

  3、输入命令:memcached.exe -d install

  memcached -d install -l 127.0.0.1 -m 1024 -c 2048

  参数说明

  • -d install 安装为Windows服务,默认端口11211
  • -l 绑定的IP
  • -m 能够使用的最多内存(MB),默认64MB。
  • -c 最发并发连接数,默认1024。

  4、 守护进程方式启动:memcached.exe -m 32 -d start

  5、 指定端口启动:memcached.exe –p 33000 -m 32

  可以启动多个服务,命令行窗口关闭则服务停止。

二、启动服务,安装完成

  测试Memcached的步骤如下:

  1).使用telnet指定访问localhost的11211端口,11211为Memcached的默认监听剪口。

  telnet localhost 11211

  2).输入stats,回车执行,检查Memcached服务的状态。

  

  3).quit命令退出。

三、在Asp.net中访问Memcached

  在Asp.net中访问Memcached的步骤如下:

  1、到Codeplex中下载Memcached Provider:http://memcachedproviders.codeplex.com/

  2、在网站项目中引用Enyim.Caching.dll,MemcachedProviders.dll以及Log4net.dll。

  3、在配置文件中“注册自定义缓存提供器”,代码如下:

<section name="cacheProvider" type="MemcachedProviders.Cache.CacheProviderSection,MemcachedProviders" allowDefinition="MachineToApplication" restartOnExternalChanges="true" />
<sectionGroup name="enyim.com">
<section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection,Enyim.Caching" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

  4、分别配置三个Section.

  首先是enyim.com的配置信息:

  <enyim.com>
<memcached>
<servers>
<!-- 自己的服务器IP放这里 -->
<add address="127.0.0.1" port="11211" />
</servers>
<socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" />
</memcached>
</enyim.com>

  然后是cacheProvider的配置信息:

  <cacheProvider defaultProvider="MemcachedCacheProvider">
<providers>
<add name="MemcachedCacheProvider" type="MemcachedProviders.Cache.MemcachedCacheProvider,MemcachedProviders" keySuffix="_MySuffix_" defaultExpireTime="2000" />
</providers>
</cacheProvider>

  最后是Log4Net的配置信息:

  <log4net>
<!-- 定义一些追加输出程序 -->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- <threshold value="OFF"> -->
<!-- 根据根目录信息,添加输出程序与设置默认优先级 -->
<root>
<priority value="WARN"/>
<appender-ref ref="ConsoleAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN"/>
<levelMax value="FATAL"/>
</filter>
</appender-ref>
</root>
</log4net>

四、操作Memcached

  对Memcached的基本操作步骤如下:

  1.引用MemcachedProviders的命名空间

  using MemcachedProviders.Cache;

  2.在Memcached中保存信息

  DistCache.Add(stringKey,objValue);

  3.从Memcached中读取信息。

  DistCache.Get(strKey);

  4.删除信息

  DistCache.Remove(cacheKey);

  5.清除所有信息

  DistCache.RemoveAll();

  不知道是不是Memcached版本的问题,导致Add。无法成功,看来还是要了解一下套接字编程,自己搞了。

Memcached缓存的更多相关文章

  1. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  2. .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存

    注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/Enyim ...

  3. redis和memcached缓存

    memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...

  4. 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)

    当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...

  5. memcached 缓存服务器

    Memcached 缓存服务器 Memcached 是高性能的分布式内存缓存服务器. 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性. 主要特点 ...

  6. Memcached缓存瓶颈分析

    Memcached缓存瓶颈分析 获取Memcached的统计信息 Shell: # echo "stats" | nc 127.0.0.1 11211 PHP: $mc = new ...

  7. 通过spring.net中的spring.caching CacheResult实现memcached缓存

    通过spring.net中的spring.caching CacheResult实现memcached缓存1.SpringMemcachedCache.cs2.APP.config3.Program. ...

  8. Windows系统下Memcached缓存系列二:CouchbaseClient(c#客户端)的详细试用,单例模式

    在上一篇文章里面 ( Windows系统下Memcached缓存系列一:Couchbase(服务器端)和CouchbaseClient(c#客户端)的安装教程 ),我们介绍了服务器端的安装和客户端的安 ...

  9. memcached缓存雪崩现象及解决办法

    1)什么是缓存雪崩?场景:一个访问很大的文章(论坛之类)的网站,使用memcached缓存用户查询过的文章.设置的缓存过期时间为6小时,所以没过6小时,缓存就会失效并重建一遍 问题:过六小时时,一部分 ...

  10. 受教了,memcache比较全面点的介绍,受益匪浅,适用memcached的业务场景有哪些?memcached的cache机制是怎样的?在设计应用时,可以通过Memcached缓存那些内容?

    基本问题 1.memcached的基本设置 1)启动Memcache的服务器端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 ...

随机推荐

  1. CentOS安装glibc-2.14,错误安装libc.so.6丢失急救办法

    CentOS安装glibc-2.14,错误安装libc.so.6丢失急救办法   到http://ftp.gnu.org/gnu/glibc/下载glibc-2.14.tar.xz tar glibc ...

  2. Python查询MySQL进行远程采集图片实例

    这是四五年以前做小说站采集图片时写过唯一一次 Python 代码 #!/usr/bin/python #-*-coding:utf-8-*- import MySQLdb, os, socket, t ...

  3. [转]修改python默认的编码方式

    今天碰到了 python 编码问题, 报错信息如下Traceback (most recent call last):  File "ntpath.pyc", line 108, ...

  4. Ninja:Java全栈Web开发框架-Ninja中文网

    相信不少业界人士都还停留在SSh的时代 其实我想给大家推荐的一个轻量级框架那就是Ninja; Ninja是一个Java全栈Web开发框架,稳定.快速.非常高效. 商业价值 在你的下一个项目中,Ninj ...

  5. virtualbox 提示 vboxclient the virtualbox kernel service is not running

    更新完Guest的内核之后,Guest下提示" vboxclient the virtualbox kernel service is not running".Guest下执行: ...

  6. PAT 团体程序设计天梯赛-练习集 L1-018. 大笨钟

    微博上有个自称“大笨钟V”的家伙,每天敲钟催促码农们爱惜身体早点睡觉.不过由于笨钟自己作息也不是很规律,所以敲钟并不定时.一般敲钟的点数是根据敲钟时间而定的,如果正好在某个整点敲,那么“当”数就等于那 ...

  7. 彻底解决tap“点透”,提升移动端点击响应速度

    申明!!!最后发现判断有误,各位读读就好,正在研究中.....尼玛水太深了 前言 近期使用tap事件为老夫带来了这样那样的问题,其中一个问题是解决了点透还需要将原来一个个click变为tap,这样的话 ...

  8. 四大类NoSQL数据库

    http://blog.sina.com.cn/s/blog_636415010101945l.html 原文:http://blog.monitis.com/index.php/2011/05/22 ...

  9. [SQL基础教程]1-4 SQL 表的创建

    [SQL基础教程]1-4 SQL 表的创建 创建数据库 语法 CREATE DATABASE <数据库名称> // example CREATE DATABASE shop; 创建表 语法 ...

  10. OPENSSL简介

    1. 什么是 SSL? SSL 是一个缩写,代表的是Secure Sockets Layer. 它是支持在Internet 上进行安全通信的标准,并且将数据密码术集成到了协议之中. 数据在离开您的计算 ...