缓存之Memcached

Memcache 的简单介绍

最近公司在做项目的时候,提到了缓存的概念,由于以前的项目用户的人数很少,所以有写看不出来,但是这个 项目的使用,是有很多人的,那么我们就应该考虑缓存了! 缓存,故名思意,就是可以临时存放东西的地方。因为缓存是内存,所以它的的读写速度,会是很快的!但是上网上查了查资料,有很多的方式,例如有Nginx,Squid,Memcached ,Reedis,eAccelerator ,但是选择哪一种呢!最后经过查资料,我们决定使用Memcached。

Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。但是为什么不选用比较火的Redis呢,由于Redis只使用单核,而Memcached可以使用多核,所以二者比较起来,平均每一个核上,Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。

MemCached的设计理念

1. 简单Key/Value存储(每条记录包括一个key、一个原生value值、一个过期时间、一个可选的flag),并且不关心Value的类型,可以存放任意数据类型;

2. 逻辑分别放在客户端与服务器端;

3. 服务器端彼此无感知;

4 . 所有操作时间复杂度为O(1);

5. 到期数据自动过期,释放出内存为其它应用使用。

memcached的安装

1.下载memcache的windows稳定版,解压放某个盘下面,比如在c:\memcached

2. 在cmd下输入 c:\memcached\memcached.exe -d install 安装(如果你对此有所怀疑的话,请不要怀疑,真的安装完成了!)

3.再输入: c:\memcached\memcached.exe -dstart 启动。

4.在windows控制台中用telnet127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。

Memcached的使用

首先我们要建立一个项目,然后添加以下四个DLL的引用

然后我们就可以在项目中使用了,我建立了一个mvc 的项目,一下的例子为在mvc 中的应用!

usingMemcached.ClientLibrary;
using System;
usingSystem.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespacememcachedDemo.Controllers
{
    public class HomeController : Controller
    {
        public void Memcache() {
           string[] serverlist = { "127.0.0.1:11211", "127.0.0.1:11211" };

             //初始化池
              SockIOPool pool = SockIOPool.GetInstance();
              pool.SetServers(serverlist);
              //设置memcached的一些参数
              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 MemcachedClient();
              mc.EnableCompression = false;

              Console.WriteLine("------------测   试-----------");
              mc.Set("test", "my value");  //存储数据到缓存服务器,这里将字符串"my value"缓存,key 是"test"

             if (mc.KeyExists("test"))   //测试缓存存在key为test的项目
              {
                  Console.WriteLine("test isExists");
                  Console.WriteLine(mc.Get("test").ToString());  //在缓存中获取key为test的项目
              }
             else
              {
                  Console.WriteLine("test notExists");
              }

             //Console.ReadLine();

              mc.Delete("test");  //移除缓存中key为test的项目

             if (mc.KeyExists("test"))
              {
                  Console.WriteLine("test isExists");
                  Console.WriteLine(mc.Get("test").ToString());
              }
             else
              {
                  Console.WriteLine("test notExists");
              }

              SockIOPool.GetInstance().Shutdown();  //关闭池,关闭sockets
              Console.ReadLine();
          }

Memcached的方法也很少,所以学习起来,真的很简单,下一篇将为大家介绍一下Redis。

时间: 2024-11-04 13:07:24

缓存之Memcached的相关文章

分布式缓存(MemCached)

最近在为找工作做准备,就看了好多.NET基础知识,发现很多关于页面之间传值的方式,其中就有Session,但也发现Session在实际使用过程中有很多问题.最典型也最重要大的BUG就是如果IIS中同时有很多进程发生时,内存不够用那么有垃圾回收机制,就会导致Session的丢失.解决方法有:可以用Sate Server或SQL Server数据库的方式存储Session,可是这两种方式都有个缺点就是处理速度慢,无法捕获END事件.因此,我便想那么还有什么方式可以解决这一问题呢? 结果就是使用分布式

高性能的分布式内存对象缓存系统Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 外文名 memcached 所    属 缓存系统 编写语言 不限 通信手段 memcached协议 目录 1功能 2特征 ? 协议 ? 事件处

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

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

高效缓存服务器Memcached(一)

一.Memcached 1.memcached 是什么 Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序.它是一个基于内存的"键值对"存储,用于存储数据库调用.API调用或页面引用结果的直接数据,如字符串.对象等.Memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件.现在已成为mixi.haten

PHP文件缓存与memcached缓存 相比 优缺点是什么呢

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 如果不考虑其他任何问题,只比较速度的话,那肯定是mem快,但他们各有优缺点. 文件缓存优点: 1.由于现在的硬盘都非常大,所有如果是大数据的时候,放硬盘里就比较合适,比如做一个cms网站,网站里有10万篇文章,生成的文件大小总数可能就会很大. 2.数据的存放较为安全,由于是硬盘存放,所以在意外掉电的情况下,缓存文件不会丢失. 3.易于扩展,如果硬盘不够用,可以更换大硬盘或者添加硬盘,在容量上受的限制很小. 文

缓存应用--Memcached分布式缓存简介

一.   什么是Memcached Memcached 是一个高性能的分布式内存 对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象 来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度. 相信很多人都用过缓存,在 .net 中也有内置的缓存机制,还有很多第三方工具如apache,nginx等可以做静态资源的缓存,同时我们也可 以制定自己的缓存机制,缓存数据库查询的数据以减少对数据库的频繁操作.但是很多时候我们总是感觉这些缓存总不尽人意, Memcached可以

缓存之Memcached简介

前言 前篇简单较少了EnCache,本篇将介绍Memcached,之后还会将两者进行对比. 正题 一.简介 Memcached是高性能的分布式内存缓存服务器.一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性. Memcached为key->value非关系型数据库,key为一般字串,值唯一.value除了php中的资源不能存,其它的数据都能存储(字符串.数值.数组.对象.布尔值.null.二进制<图片.视频>) 二.提速方法: 1.传

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

在Memcached中实体类型未经序列化不能在Memcached中缓存,因此需要对实体类进行处理,才能缓存下来. Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 我们可以使用Memcached缓

扫盲:php session缓存至memcached中的方法

memcached是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用.这是一套开放源代码软件,以BSD license授权协议发布.[1] memcached仅支持一些非常简单的命令 比如get(获取某个键值) set(用来设定或保存一个缓存): 其本身是缓存服务器,但本身无法决定缓存任何数据,其缓存机制依赖于服务端和客户端两者必不可少(存储是由服务端进行存储,但存储什么是由客户端进行决定的) 因此客户端

分布式缓存BeIT Memcached简介

分布式缓存BeIT Memcached简介 或许你还没有用到过分布式缓存,在web集群的情况下,它可以很好的让一部分常用数据常驻服务器内存而不用担心各台web不同步.下面稍微介绍一下beitmemcached对于.net的支持,官方参考http://code.google.com/p/beitmemcached/ 一个完整的操作步骤:1.点击上面页面的downloads,把Memcached_1.2.5.zip 和BeITMemcached_source_2008_05_31.zip两个压缩包下