




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一. 什么是MemcachedMemcached 是一个高性能的分布式内存 对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象 来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。相信很多人都用过缓存,在 .net 中也有内置的缓存机制,还有很多第三方工具如apache,nginx等可以做静态资源的缓存,同时我们也可 以制定自己的缓存机制,缓存数据库查询的数据以减少对数据库的频繁操作。但是很多时候我们总是感觉这些缓存总不尽人意, Memcached可以解决你不少的烦恼问题。 最少在我的学习中解决了我不少问题,所以决定记录下来分享。Memcached基于一 个存储键/值对的hashmap。其守护进程是用C写的,但是客户端可以用任何语言来编写(本文使用C#作为例子),并通过memcached协议与守护进程通信。可 能这些东西都太高深了,我们暂不做研究。 二. 分布式缓存其实 Memcached作为一个分布式缓存数据服务,但是每个服务之间根本没有进行相互通信,这里可能与 我理解的分布式有点区别,可能是我才疏学浅,也可能是每个人思考问题的角度不同。Memcached 客户端就是通过一种分布式算法将数据保存到不同的Memcached服务器上,将数据进行缓存。分布 式缓存,可以而知memcached可以进行大数据量的缓存。这点可以弥补我们之前很多人都遇到的将 数据缓存到应用服务器上,而且只能缓存少量数据,否则对应用服务器的影响非常大。Memcached应用机制图:这个图是有点简陋了,但是问题还是能够描述的清楚的,缓存机制的基本原理就是先查询数据保存到memcached中,地址在此请求就直接从Memcached缓存中取数据,这样就可以减少对服务器请求压力。三. Memcached 特征(1) 协议简单: 不使用复杂的xml格式,而是使用文本格式(2) 基于libevent的事件处理机制 (不懂)(3) 内置内存存储方式: 数据存在在内存中,所以重启机器会导致数据丢失(4)Memcached相互不通信的分布式: Memcached 服务器之间不会进行通信,数据都是通过客户端的分布式算法存储到各个服务器中四. Memcached的安装首先这里是在windows系统上做测试,Memcached在linux等非windows平台上性能会更高。下载Memcached 服务端: / (官网寻找适用的版本)1 解压缩文件到D:Program FilesMemcached2命令行输入 D:Program FilesMemcachedmemcached.exe -d install 3 命令行输入 D:Program FilesMemcachedmemcachedmemcached.exe -d start,该命令启动 Memcached ,默认监听端口为 11211当然我们可以在windows 服务中查看到此此服务:五 .NET 平台下使用Memcached因为个人首先接触的客户端是memcacheddotnet ,所以习惯了适用这个核心库作为客户端。下载的工作都非常简单,因为客户端都帮我们实现了分布式程序算法,我们关心的只要怎样去存在获取这些数据。下面简单介绍一下:1staticvoidMain(stringargs)23SockIOPoolpool=SockIOPool.GetInstance();4stringservers=:11211;5pool.SetServers(servers);6pool.MinConnections=3;7pool.MaxConnections=5;8pool.InitConnections=3;9pool.SocketConnectTimeout=5000;10pool.Initialize();1112MemcachedClientclient=newMemcachedClient();13client.EnableCompression=false;14Console.WriteLine(-MemcachedSet设置值-);15client.Set(key1,value1);16Console.WriteLine(client.Get(key1);17Console.WriteLine(-MemcachedAdd设置值-);18client.Add(key2,value2);19Console.WriteLine(client.Get(key2);20client.Set(key2,value1value2);21Console.WriteLine(client.Get(key2);22Console.WriteLine(-MemcachedReplace设置值-);23client.Replace(key2,value3);24Console.WriteLine(client.Get(key2);2526Console.WriteLine(-Memcached键值是否存在-);27if(client.KeyExists(key2)2829Console.WriteLine(键key2存在);3031if(client.KeyExists(hechen)=false)3233Console.WriteLine(键hechen不存在);343536Console.WriteLine(-Memcached删除数据-);37client.Add(key4,value4);38Console.WriteLine(key4=+client.Get(key4);39client.Delete(key4);40if(!client.KeyExists(key4)4142Console.WriteLine(key4已将删除);434445Console.WriteLine(-Memcached数据过期-);46client.Add(key5,value5,DateTime.Now.AddMilliseconds(5000);47Console.WriteLine(client.Get(key5);48System.Threading.Thread.Sleep(6000);49Console.WriteLine(过期:+client.Get(key5);50上面的例子虽然简单,包括一些基本的用法,在一般使用Memcached缓存数据的时候都用得到。Memcached 初始化数据 1SockIOPoolpool=SockIOPool.GetInstance();2stringservers=:11211;3pool.SetServers(servers);4pool.MinConnections=3;5pool.MaxConnections=5;6pool.InitConnections=3;7pool.SocketConnectTimeout=5000;8pool.Initialize();SockIOPool 用于初始化分布式缓存池的对象,上面设置了多种属性,我相信这些属性的意思大家都懂。这里要注意的是Initialize() ,只有调用这个方式之后,才能初始化数据。才能使用连接缓存池。Memcached 设置缓存值的三种方式 1MemcachedClientclient=newMemcachedClient();2client.EnableCompression=false;3Console.WriteLine(-MemcachedSet设置值-);4client.Set(key1,value1);5Console.WriteLine(client.Get(key1);6Console.WriteLine(-MemcachedAdd设置值-);7client.Add(key2,value2);8Console.WriteLine(client.Get(key2);9client.Set(key2,value1value2);10Console.WriteLine(client.Get(key2);11Console.WriteLine(-MemcachedReplace设置值-);12client.Replace(key2,value3);13Console.WriteLine(client.Get(key2);有心的可以测试一下这三个方法: Set () 如果缓存中存在相同的键值这替换原有的,Add() 只是添加数据,如果存在相同键的不再添加。Replace() 则用于替换已有的相同的键值。Memcached 缓存数据过期 1Console.WriteLine(-Memcached数据过期-);2client.Add(key5,value5,DateTime.Now
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- led工程安装合同范本
- 蒲庙租房合同范本
- 涉外投资经营合同范本
- 建筑装饰合同范本
- 小型叉车租赁合同范本
- 红酒销售供货合同范本
- 出土方合同范本
- 社区实验基础知识培训课件
- 小区外管网合同范本
- 生产工人的合同范本
- 2023年北京邮电大学招聘笔试真题
- xx公路与天然气管道交叉方案安全专项评价报告
- 药店员工培训与考核制度
- 检验科技术人员基本技能考核表2014
- 《教育心理学(第3版)》全套教学课件
- 鹧鸪山隧道瓦斯地段专项施工方案
- 病原微生物实验活动风险评估表
- 水果购销合同范本高清
- 中国舷外机(船外机)行业现状及趋势
- JT-T-496-2018公路地下通信管道高密度聚乙烯硅芯塑料管
- 伯克利-利特温(组织绩效与变革因果关系)组织诊断+模型案例、工具解析
评论
0/150
提交评论