缘起: 在数据驱动的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 代码
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 namespace Memcached.MemcachedBench
2 {
3 using System;
4 using System.Collections;
5
6 using Memcached.ClientLibrary;
7
8 public class MemcachedBench
9 {
10 [STAThread]
11 public static void Main(String[] args)
12 {
13 string[] serverlist = { "10.0.0.131:11211", "10.0.0.132:11211" };
14
15 //初始化池
16 SockIOPool pool = SockIOPool.GetInstance();
17 pool.SetServers(serverlist);
18
19 pool.InitConnections = 3;
20 pool.MinConnections = 3;
21 pool.MaxConnections = 5;
22
23 pool.SocketConnectTimeout = 1000;
24 pool.SocketTimeout = 3000;
25
26 pool.MaintenanceSleep = 30;
27 pool.Failover = true;
28
29 pool.Nagle = false;
30 pool.Initialize();
31
32 // 获得客户端实例
33 MemcachedClient mc = new MemcachedClient();
34 mc.EnableCompression = false;
35
36 Console.WriteLine("------------测 试-----------");
37 mc.Set("test", "my value"); //存储数据到缓存服务器,这里将字符串"my value"缓存,key 是"test"
38
39 if (mc.KeyExists("test")) //测试缓存存在key为test的项目
40 {
41 Console.WriteLine("test is Exists");
42 Console.WriteLine(mc.Get("test").ToString()); //在缓存中获取key为test的项目
43 }
44 else
45 {
46 Console.WriteLine("test not Exists");
47 }
48
49 Console.ReadLine();
50
51 mc.Delete("test"); //移除缓存中key为test的项目
52
53 if (mc.KeyExists("test"))
54 {
55 Console.WriteLine("test is Exists");
56 Console.WriteLine(mc.Get("test").ToString());
57 }
58 else
59 {
60 Console.WriteLine("test not Exists");
61 }
62 Console.ReadLine();
63
64 SockIOPool.GetInstance().Shutdown(); //关闭池, 关闭sockets
65 }
66 }
67 }
分享到:
相关推荐
分布式缓存系统在现代Web开发中扮演...总的来说,分布式缓存系统Memcached是现代Web应用中不可或缺的工具。通过深入学习和实践,我们可以充分利用其优势,优化应用性能,减轻数据库压力,从而提供更高效、稳定的服务。
Memcached是一款高性能、分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。这个“Memcached分布式缓存入门”资料将引导初学者深入理解Memcached的核心概念、工作原理以及...
"20120102 net下memcached 分布式缓存系统应用" 这个标题表明这是一个关于在.NET环境中使用Memcached作为分布式缓存系统的实践教程或参考资料。时间戳“20120102”可能指的是资料的创建日期,暗示了这是较早时期的...
常见的分布式缓存系统如Redis、Memcached等,它们支持键值对存储,提供了高并发、低延迟的数据访问能力。此外,本章可能还会涉及一致性哈希算法,它是分布式缓存中解决数据分片和负载均衡的关键技术。 “分布式缓存...
4. 内存分布式缓存:如Redis、Memcached,用于提高读取性能和减少数据库压力。 5. 数据分布与一致性:包括Gossip协议、Chubby锁服务等实现分布式一致性的方式。 另一方面,《分布式服务框架原理与实践》聚焦于服务...
本文将深入探讨.NET环境下使用Memcached作为分布式缓存的实践,基于提供的源码进行分析。 首先,`ABenNet.Knowledge.Memcached.sln`是一个Visual Studio解决方案文件,通常包含了多个项目,这些项目可能包括了...
分布式缓存系统在现代Web应用程序开发中扮演着至关重要的角色,尤其对于高并发、大数据量的场景,能够显著提升性能并降低数据库压力。本实例主要介绍如何使用C#语言集成和应用Memcached作为分布式缓存解决方案,以...
3. **常用分布式缓存系统**: - Redis:高性能的键值存储系统,支持丰富的数据结构,广泛应用在缓存和消息队列场景。 - Memcached:轻量级的缓存系统,主要用于Web应用的加速。 - Ehcache:Java平台的本地缓存...
综上所述,分布式缓存系统数据迁移的关键技术研究与优化设计,能够有效提高大规模数据处理系统的性能,确保系统的高可用性和稳定性。这对于IT行业特别是分布式系统的设计与优化具有重要的理论和实践价值。
Memcached是一款广泛使用的开源高性能分布式内存对象缓存系统,它能够减轻数据库的负载,提高应用程序的响应速度。在.NET环境中,开发人员可以借助特定的类库来集成Memcached,实现.NET应用的分布式缓存功能。本文将...
常见的分布式缓存系统如Redis、Memcached和Hazelcast等,它们都有各自的特点和优势。 **Redis** 是一个高性能的键值对存储系统,支持多种数据结构,如字符串、哈希、列表、集合和有序集合,同时提供了丰富的操作...
Memcached是一个高性能、分布式内存对象缓存系统,常用于加速动态Web应用,通过将数据存储在内存中,减少对数据库的直接访问,从而提高了应用性能。 一、Memcached的基本概念与工作原理 1. **分布式**: Memcached...
银联的NoSQL数据库技术与分布式缓存的异地多活实践,为我们展示了如何在金融领域应用先进的技术来提升服务质量和用户体验。这不仅要求技术的先进性,还需要深入理解业务需求,并结合严格的运维管理,才能实现如此...
Redis是一种高性能的Key/Value分布式缓存系统,其名称源于“Remote Dictionary Server”的缩写。作为NoSQL数据库,Redis与其他键值存储系统如Memcached有相似之处,但提供了更丰富的数据结构,包括字符串(string)...
分布式数据管理是构建分布式缓存系统的核心,其目标是实现多节点环境中的缓存数据的有效管理。一致性的哈希算法是一种常用的分布式数据管理模型,它通过哈希函数将数据分布到一个虚拟环上,每个节点负责环上的一个...
5. **分布式缓存**:如Redis、Memcached,用于缓解数据库压力,提高数据访问速度。理解其数据结构、过期策略以及事务处理是必要的。 6. **分布式消息队列**:如RabbitMQ、Kafka,提供异步解耦,提高系统响应速度和...
Memcached是一款高性能、分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库负载,提高页面加载速度,从而显著提升网站的整体性能。Memcached的设计理念是简单而高效,它将数据存储在内存中,通过...
分布式缓存系统如Oracle Coherence、Memcached和Terracotta等,已在资源供给、数据管理、安全性和自适应性等方面取得了显著进展。然而,这些系统在处理热点数据分布不均衡和数据迁移策略等方面仍有待改进。例如,...
5. 分布式缓存:如Redis、Memcached等,它们在缓解数据库压力、提高数据访问速度方面的作用。 6. 分布式事务管理:2PC、补偿事务(TCC)、Saga等事务管理策略在分布式环境中的应用。 7. 数据库分片技术:如Mycat,...