Memcached在.net中的应用
一。MemCached下载
服务端下载:http://memcachedproviders.codeplex.com/
client下载:http://sourceforge.net/p/memcacheddotnet/code/HEAD/tarball?path=/trunk
二,服务端的安装及配置
1) 解压缩文件到c:\memcached(也能够选择任何位置)
2) 命令行输入 'c:\memcached\memcached.exe -d install'
3) 命令行输入 'c:\memcached\memcached.exe -d start' ,该命令启动 Memcached 。默认监听port为 11211
4) 通过 memcached.exe -h 能够查看其帮助
三,client的安装及引用
对于client操作服务端,我们有多种可选方式,在这里,我们选择使用dll.因为dll的方式生成较快。而且避免了繁琐的配置文件中的设置,比較方便。对于telnet命令等等。我们能够在服务端使用来检查数据,查看cache的命中率等。
1.关于Dll的引用
下载完Dll之后,在项目中加入如图引用;
2,可能出现故障
我在引入log4net跟Memcached.ClientLibray的时候。出现引入了,类文件中面也加入了using,可是以生成就报错,后来发现是.net framework版本号的问题。将版本号从下图版本号改为.net framework 4之后生成就ok了。
四,Memcached机制深入了解
1,基于C/S架构,协议简单
1) C/S架构,此时memcached为服务端。我们能够使用各种client程序连接memcachedserver。
2) Memcached的serverclient通信不使用XML等格式,而使用简单的基于文本行的协议,因此,通过telnet也能在memcached上保存数据,取得数据。
2。基于libevent的事件处理
1) Libevent是一套跨平台的事件处理接口的封装。能够兼容包含这些操作系统:Windows/Linux/BSD/Solaris等操作系统的事件处理。
2) Memcached使用libevent来进行网络并发连接的处理,能够保持在非常大的并发情况下,仍旧能够保持高速响应的能力。
3。内置内存存储方式
为了提高性能。memcached中保存的数据都存储在memcahced内置的内存存储空间中。
因为数据仅存在于内存中,因此重新启动memcached,重新启动操作系统会导致所有数据消失。
另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自己主动删除不使用的缓存。Memcached本身是为缓存而设计的server,隐藏并没有过多考虑数据的永久性问题。
4。基于client的分布式
Memcached虽然是“分布式”缓存server,但服务端并没有分布式功能更。各个memcached不会相互通信以共享信息。那么,如何进行分布式。这全然取决于client的实现。有兴趣的能够百度下hash算法。
代码体会:
五,memcached与session
1) 生命周期不同
2) 要解决的问题重点不同
六,memcached与Cache
cache作为。Net中状态管理的东东,感觉也相当强大:1,缓存依赖:能够依赖或文件,数据库,组合的依赖。而且提供了数据过期的通知机制,方便在我们在过期的时候及时更新数据。2,通知机制的使用:曾经比較早的时候,对于数据过只是期,使用的还是轮询机制,类似循环查看数据有没有被更新,假设被更新了,则此时更新cache。
可是总感觉轮询机制非常怪怪的。比方,我在家烧一壶水。不应该是我总去看水开没开,而是要水开了然后有个啥声音告诉我水开了。通知机制就是这个意思,至于通知机制的原理,能够去查一下observer模式。在23中设计模式中。这个用的还是蛮多的。
当初使用memcached的时候。因为cache的原因,就自然想到了这个通知机制。查了一下,貌似memcached是没有这个的,要想自己做一个过期更新,也仅仅能使用轮询机制。
可是从memcached的使用场景去思考,我们会发现事实上有过期时间就足够了。
七,memcached的适用场景
1) 变化频繁,具有不稳定性的数据,不须要实时入库(比方用户在线状态,在线人数)
2) 门户站点的新闻的等,认为页面静态化仍不能满足要求。能够放入到memcached中(配合jquery的ajax请求)
……
八。memcached的安全性问题
因为memcached没有内置身份验证机制。造成了使用telnet訪问ip+port就能够登录的情况。然后里面的数据就成了待宰的羔羊。为了避免防止被黑掉。我们能够在memcachedserver上对外关闭掉訪问port,仅仅同意本机程序訪问。
九,类似技术的比較
1,Redis
1) 支持很多其它value类型
2) 可持久化:redis会周期性的把更新的数据写入磁盘或者把改动操作写入追加的记录文件。而且在此基础上实现了master-slave(主从)同步
3) 支持主从同步:数据能够从主server向随意数量的从server上同步。从server能够是关联其它从server的主server。
这使得Redis可运行单层树复制。存盘能够有意无意的对数据进行写操作。
因为全然实现了公布/订阅机制,使得从数据库在不论什么地方同步树时,可订阅一个频道并接收主server完整的消息公布记录。同步对读取操作的可扩展性和数据冗余非常有帮助。
2,EhCache
1) 纯Java的进程内缓存框架。具有高速、精干等特点,是Hibernate中默认的CacheProvider。
2) 开源Java分布式缓存: 主要面向通用缓存,Java EE和轻量级容器。
它具有内存和磁盘存储。缓存载入器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。
。
。。。。。。。
。
相关文章
- ASP.NET MVC 实现二级域名
- abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级(六十)
- 快学会这个技能-.NET API拦截技法
- Asp.Net Core WebApi6解决跨域问题
- 如何提升.NET控制台应用体验?
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
- MVC的验证(模型注解和非侵入式脚本的结合使用) .Net中初探Redis .net通过代码发送邮件 Log4net (Log for .net) 使用GDI技术创建ASP.NET验证码 Razor模板引擎 (RazorEngine) .Net程序员应该掌握的正则表达式
- 如何在Visual Studio 2017中使用C# 7+语法 构建NetCore应用框架之实战篇(二):BitAdminCore框架定位及架构 构建NetCore应用框架之实战篇系列 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架 NetCore入门篇:(十二)在IIS中部署Net Core程序
- C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案
- Word控件Spire.Doc 【Table】教程(8): 将内置表格样式应用于 C#、VB.NET 中的现有 Word 表格
- asp.net, c#,时间查询大全, sql语句 用于SQLServer(mssql)
- asp.net中通过ashx转换,把代码写入.cs文件的2种方法(Ajax中应用)
- 在ASP.NET Web API中使用OData的Containment
- .net core 3.1 webapi后端接收钉钉小程序post的文件/图片
- asp.net中利用session对象传递、共享数据[session用法]
- 《ASP.NET 开发从入门到精通》----第1章 ASP.NET基础 1.1 认识网页和网站
- 《Microsoft.NET企业级应用架构设计(第2版)》——第1章 今天的架构师和架构 1.1软件架构到底是什么
- 《Microsoft.NET企业级应用架构设计(第2版)》——1.2 谁是架构师
- 《Microsoft.NET企业级应用架构设计(第2版)》——1.3 总结
- 《Microsoft.NET企业级应用架构设计(第2版)》——2.5 笑到最后
- .NET Framework 4.0之Tuple(元组)
- .Net中的AOP系列之《单元测试切面》
- 一、.Net Core 分块上传文件
- 【转】Asp.Net MVC4 之Url路由
- ASP.NET Core提供模块化Middleware组件
- 初识ASP.NET---一般处理程序
- asp.net中 使用参数化mysqlparameter 保存数据时,总保存成一个汉字的解决方案。
- 警告 - no rule to process file 'WRP_CollectionView/README.md' of type net.daringfireball.markdown for architecture i386
- .Net Core 3.0授权组件源码解析
- asp.net-Creating JavaScript objects from ASP.NET objects
- U-Net: 卷积网络在生物医学图像分割中的应用
- ASP.NET 保存txt文件