`

转载:分布式缓存系统memcached简介与实践

 
阅读更多
在数据驱动的Web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够灵活。此时memcached或许是你想要的。
memcached是什么?
memcached是由Danga Interactive开发的,高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
memcached能缓存什么?
通过在内存里维护一个统一的巨大的hash表,Memcached能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。
memcached快么?
非常快。memcached使用了libevent(如果可以的话,在linux下使用epoll)来均衡任何数量的打开链接,使用非阻塞的网络I/O,对内部对象实现引用计数(因此,针对多样的客户端,对象可以处在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。
Danga Interactive为提升Danga Interactive的速度研发了memcached。目前,LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些,是由一个由web服务器和数据库服务器组成的集群完成的。memcached几乎完全放弃了任何数据都从数据库读取的方式,同时,它还缩短了用户查看页面的速度、更好的资源分配方式,以及memcache失效时对数据库的访问速度。
memcached的特点
memcached的缓存是一种分布式的,可以让不同主机上的多个用户同时访问, 因此解决了共享内存只能单机应用的局限,更不会出现使用数据库做类似事情的时候,磁盘开销和阻塞的发生。
memcached的使用
memcached服务器端的安装 (此处将其作为系统服务安装)
下载文件:memcached 1.2.1 for Win32 binaries (Dec 23, 2006)
1. 解压缩文件到
c:\memcached
2. 命令行输入
'c:\memcached\memcached.exe -d install'
3. 命令行输入
'c:\memcached\memcached.exe -d start'
该命令启动 memcached ,默认监听端口为 11211,通过 memcached.exe -h 可以查看其帮助。
.NET memcached client library
下载文件:https://sourceforge.net/projects/memcacheddotnet/
里面有.net1.1 和 .net2.0的两种版本 还有一个不错的例子。
应用
1. 将Commons.dll,ICSharpCode.SharpZipLib.dll,log4net.dll,Memcached.ClientLibrary.dll 等放到bin目录
2. 引用Memcached.ClientLibrary.dll
3. 代码
 namespace Memcached.MemcachedBench
 {
     using System;
     using System.Collections;
 
     using Memcached.ClientLibrary;
 
     public class MemcachedBench 
      {
          [STAThread]
         public static void Main(String[] args) 
          {
            string[] serverlist = { "10.0.0.131:11211", "10.0.0.132:11211" };
 
             //初始化池
              SockIOPool pool = SockIOPool.GetInstance();
              pool.SetServers(serverlist);
 
              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 is Exists");
                  Console.WriteLine(mc.Get("test").ToString());  //在缓存中获取key为test的项目
              }
             else
              {
                  Console.WriteLine("test not Exists");
              }
 
              Console.ReadLine();
 
              mc.Delete("test");  //移除缓存中key为test的项目
 
            if (mc.KeyExists("test"))
              {
                  Console.WriteLine("test is Exists");
                  Console.WriteLine(mc.Get("test").ToString());
              }
             else
              {
                  Console.WriteLine("test not Exists");
              }
              Console.ReadLine();
             
              SockIOPool.GetInstance().Shutdown();  //关闭池, 关闭sockets
          }
      }
 }


4. 运行结果

  • 大小: 9.5 KB
分享到:
评论

相关推荐

    分布式缓存系统Memcached简介及开发环境搭建

    分布式缓存系统是现代Web应用中提升性能的关键技术之一,Memcached作为其中的代表,以其高性能、简单易用的特点被广泛采用。Memcached是一个开源的、基于内存的分布式缓存解决方案,主要目的是减少对数据库的访问,...

    分布式缓存系统Memcached

     Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及...

    分布式缓存系统Memcached学习心得.zip

    Memcached是一款高效、轻量级的分布式内存对象缓存系统,它旨在减轻数据库负载,提升应用性能。本资源针对Memcached的学习,包含了服务端部署、客户端使用以及实战代码示例,为开发者提供了全面的了解和实践途径。 ...

    分布式缓存客户端MemcachedProviders最新下载

    Memcached是一种广泛使用的开源高性能、分布式内存对象缓存系统,它可以存储数据并提供高速访问,减轻数据库负载,从而提升整体系统性能。MemcachedProviders则是针对Memcached的一种客户端实现,为开发者提供了更...

    云平台技术选型之五:分布式缓存

    Memcached 是一个高性能的分布式内存对象缓存系统,主要优势在于简单的操作和高效率的数据处理能力。它通过哈希存储数据,所有数据操作都在内存中完成,支持简单的文本协议进行数据通信。不过,Memcached 也有一定的...

    C#/.net分布式缓存系统Memcached 实例

    Memcached是一个高性能的分布式的内存对象缓存系统.它的缓存是一种分布式的,也就是可以允许不同主机上的多个用户同时访问这个缓存系统,这种方法不仅解决了共享内存只能是单机的弊端,同时也解决了数据库检索的压力...

    Memcached分布式缓存系统的应用.pdf

    Memcached作为一种流行的分布式缓存系统,通过在内存中缓存数据和对象,显著提高了Web应用的响应速度和性能。分布式缓存通过将缓存数据分布在多个服务器节点上,能够实现负载均衡、容错、以及数据一致性,这些特性...

    Memcached分布式缓存学习.doc

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

    Memcached分布式缓存

    Memcached是一款高性能、分布式内存对象缓存系统,旨在通过减轻数据库负担来加速动态网络应用的速度。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高网站或应用的响应速度。 **1.2 Memcached的特征...

    大规模分布式存储系统:原理解析与架构实战,分布式服务框架原理与实践_李林锋著

    《大规模分布式存储系统:原理解析与架构实战》与《分布式服务框架原理与实践》这两本书深入探讨了现代IT行业中至关重要的两个主题:分布式存储系统和分布式服务框架。这两者都是构建可扩展、高可用性及高性能应用的...

    Memcached分布式缓存入门

    Memcached是一款高性能、分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。这个“Memcached分布式缓存入门”资料将引导初学者深入理解Memcached的核心概念、工作原理以及...

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

    运行程序后,第一次加载数据,会将数据存入缓存;点击“加载数据”按钮,这个时候,数据是从缓存中读取的。 如果要测试是否为缓存,将“"select top 100 * from UM_Function order by FuncID";”中的“order by ...

    分布式缓存服务器memcacaed的源代码

    分布式缓存服务器Memcached是互联网应用中广泛使用的内存对象缓存系统,用于减轻数据库的负载,提高应用程序的性能。Memcached的设计目标是简单且高效,它通过在内存中存储数据来提供快速的数据访问。让我们深入了解...

    Memcached分布式缓存简介

    Memcached是一种高性能的分布式内存对象缓存系统,主要用于动态Web应用程序,以缓解数据库负载。它通过将数据和对象存储在内存中,减少对数据库的直接访问,从而提高动态、数据库驱动网站的速度。对于.NET开发者来说...

    分布式缓存Memcached实例

    Memcached是一款由Danga Interactive公司设计并开发的高效、分布式内存对象缓存系统。它的主要目标是减轻数据库的负担,提高动态应用程序的响应速度,通过将数据存储在内存中,使得频繁访问的数据可以更快地被获取,...

    Memcached 分布式缓存实现原理简介

    分布式缓存是现代高并发应用中缓解数据库压力的关键技术,Memcached作为一款广泛使用的分布式内存缓存系统,其设计和实现原理对于理解分布式系统至关重要。本文主要探讨了Memcached的分布式实现,以及它如何通过简单...

    cachelot, 缓存库和分布式缓存服务器 Memcached兼容.zip

    cachelot, 缓存库和分布式缓存服务器 Memcached兼容 什么是Cachelot库如果应用程序需要一个以光速工作的LRU缓存。 这就是Cachelot库的意思。库与固定预先分配的内存一起工作。 你告诉内存大小,LRU缓存已经就绪。...

    20120102 net下memcached 分布式缓存系统应用

    7. **故障转移与分布式一致性**:如何处理节点故障,以及Memcached的分布式一致性哈希算法。 8. **性能优化**:缓存命中率提升技巧,避免缓存击穿、雪崩等问题的方法。 9. **源码分析**:如果包含源码,可能涉及具体...

Global site tag (gtag.js) - Google Analytics