Memcached在.net中的应用

简介: 一,MemCached下载服务端下载:http://memcachedproviders.codeplex.com/客户端下载:http://sourceforge.net/p/memcacheddotnet/code/HEAD/tarball?path=/trunk  二,服务...



一,MemCached下载


服务端下载:http://memcachedproviders.codeplex.com/

客户端下载: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 ,默认监听端口为 11211

4)        通过 memcached.exe -h 可以查看其帮助

 


三,客户端的安装及引用



        对于客户端操作服务端,我们有多种可选方式,在这里,我们选择使用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为服务端,我们可以使用各种客户端程序连接memcached服务器。

2)        Memcached的服务器客户端通信不使用XML等格式,而使用简单的基于文本行的协议,因此,通过telnet也能在memcached上保存数据,取得数据。


2,基于libevent的事件处理


1)        Libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:Windows/Linux/BSD/Solaris等操作系统的事件处理。

2)        Memcached使用libevent来进行网络并发连接的处理,能够保持在很大的并发情况下,仍旧能够保持快速响应的能力。


3,内置内存存储方式


        为了提高性能,memcached中保存的数据都存储在memcahced内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached,重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。Memcached本身是为缓存而设计的服务器,隐藏并没有过多考虑数据的永久性问题。

 

4,基于客户端的分布式

 

      Memcached尽管是“分布式”缓存服务器,但服务端并没有分布式功能更。各个memcached不会相互通信以共享信息。那么,怎样进行分布式,这完全取决于客户端的实现,有兴趣的可以百度下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+端口就可以登录的情况,然后里面的数据就成了待宰的羔羊。为了避免防止被黑掉,我们可以在memcached服务器上对外关闭掉访问端口,只允许本机程序访问。


九,相似技术的比较


1,Redis


1)        支持更多value类型


2)        可持久化:redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步


3)        支持主从同步:数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。


2,EhCache


1)        纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。

2)        开源Java分布式缓存: 主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。


。。。。。。。。。







 

目录
相关文章
|
5月前
|
算法 Java 调度
|
8月前
|
Kubernetes 关系型数据库 数据库
.netcore应用容器化部署
.netcore应用容器化部署
|
8月前
|
安全 C# 开发工具
模拟.NET应用场景,综合应用反编译、第三方库调试、拦截、一库多版本兼容方案
模拟.NET实际应用场景,综合应用三个主要知识点:一是使用dnSpy反编译第三库及调试,二是使用Lib.Harmony库实现第三库拦截、伪造,三是实现同一个库支持多版本同时引用。
模拟.NET应用场景,综合应用反编译、第三方库调试、拦截、一库多版本兼容方案
|
9天前
|
C# Windows
一款.NET开源、简洁易用的Windows桌面小说阅读应用
一款.NET开源、简洁易用的Windows桌面小说阅读应用
|
11天前
|
缓存 监控 PHP
【PHP开发专栏】Memcached在PHP中的缓存应用
【4月更文挑战第29天】Memcached是高性能分布式内存缓存系统,常用于加速动态Web应用,减轻数据库负担。在PHP中,通过官方扩展模块与Memcached服务器交互,涉及安装扩展、创建实例、设置/获取缓存、删除缓存及其它操作。使用Memcached可减少数据库负载、缓存查询结果、实现页面缓存,支持分布式缓存,并需注意避免缓存击穿、穿透和雪崩。监控和调优缓存策略能优化性能。了解和掌握Memcached有助于提升PHP应用的效率和扩展性。
|
11天前
|
开发框架 物联网 测试技术
【专栏】.NET 开发:打造领先应用的基石
【4月更文挑战第29天】本文探讨了.NET开发框架为何成为构建领先应用的首选。高性能与稳定性是.NET的核心优势,它采用先进的技术和优化策略,如.NET Core的轻量级设计和JIT/AOT编译模式。跨平台兼容性让开发者能用相同代码库在不同操作系统上构建应用。现代化的开发体验,如C#语言的创新特性和Visual Studio的强大工具,提升了开发者生产力。丰富的生态系统和广泛支持,包括庞大的开发者社区和微软的持续投入,为.NET提供了坚实后盾。
|
11天前
|
机器学习/深度学习 人工智能 Cloud Native
【专栏】洞察.NET 技术的前沿应用
【4月更文挑战第29天】本文探讨了.NET技术的前沿应用,包括.NET Core的跨平台崛起、云原生及AI/机器学习领域的整合。.NET Core支持多平台运行,开源社区的参与促进了其快速发展和性能优化。Xamarin与.NET MAUI助力跨平台移动应用和统一界面开发,而云原生应用借助.NET Core与Azure云服务得以轻松构建和部署。此外,ML.NET和TensorFlow.NET为.NET开发者提供了机器学习和深度学习工具,推动智能应用和边缘计算的创新。.NET技术正持续演进,引领软件开发新趋势。
|
11天前
|
人工智能 物联网 开发者
【专栏】探究.NET 技术的创新应用
【4月更文挑战第29天】本文探讨了.NET技术的最新进展和创新应用,包括.NET 5及后续版本的统一平台、性能提升、跨平台支持、云集成优化和开源社区的贡献。在创新应用场景中,重点介绍了微服务架构、物联网、AI、游戏开发和移动应用。未来,.NET将持续优化性能,深化云原生应用,集成新兴技术,扩大社区生态,并促进相关教育和培训。开发者应把握.NET技术的潜力,积极参与其发展,创造更多创新软件产品。
|
11天前
|
安全 Linux API
【专栏】.NET 开发:打造卓越应用的秘诀
【4月更文挑战第29天】本文介绍了.NET技术的起源、核心特性和应用场景,揭示了其打造卓越应用的秘诀。自2002年推出,.NET历经发展,现支持跨平台,包括.NET Core和.NET 5。其核心特性包括:跨平台兼容性、面向对象编程、内置安全性和高效性能。丰富的类库、强大的开发工具、简洁的语言语法以及活跃的社区支持,使.NET成为构建高效、安全应用的理想选择。随着技术进步,.NET将持续赋能开发者创造更多可能性。
|
11天前
|
人工智能 安全 API
【专栏】理解 .NET 技术,打造优质应用
【4月更文挑战第29天】本文探讨了如何利用.NET技术构建高质量应用程序,介绍了.NET从2002年发展至今的历程,强调其跨平台能力、高效开发、丰富的类库和API、开源生态及安全性等优势。随着.NET 6的规划,平台将更加统一和跨平台,适应云计算、AI等新兴技术。.NET凭借其特性,成为开发者和企业创新的有力工具,未来将继续扮演重要角色。