Memcached在.net中的应用

一,服务端的安装及配置

1)        解压缩文件到c:memcached(也可以选择任意位置)

2)        命令行输入 ‘c:memcachedmemcached.exe -d install’

3)        命令行输入 ‘c:memcachedmemcached.exe -d start’ ,该命令启动 Memcached ,默认监听端口为 11211

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

二,客户端的安装及引用

Memcached在.net中的应用

        对于客户端操作服务端,我们有多种可选方式,在这里,我们选择使用dll.因为dll的方式生成较快,而且避免了繁琐的配置文件中的设置,比较方便。对于telnet命令等等,我们可以在服务端使用来检查数据,查看cache的命中率等。

1.关于Dll的引用

 

下载完Dll之后,在项目中添加如图引用

2,可能出现问题

     我在引入log4net跟Memcached.ClientLibray的时候,出现引入了,类文件里面也加入了using,但是以生成就报错,后来发现是.net framework版本的问题,将版本从下图版本改为.net framework 4之后生成就ok了。

 Memcached在.net中的应用

三,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在.net中的应用

代码体会:

 Memcached在.net中的应用

四,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在.net中的应用

     由于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等特点。

。。。。。。。。。

 以上就是Memcached在.net中的应用的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2550645.html

(0)
上一篇 2025年3月6日 05:59:54
下一篇 2025年2月25日 19:58:34

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • .Net配置文件——统一节点配置管理

           对于.net中的自定义节点,如果要单独处理,就要为这个节点添加一个指定的类,如果我们在一个应用程序中,定义了很多个自定义节点的话,还按照这样做,就会多出很多个处理类来,为了避免太多的类,我们将所有自定节点都指定一个自定义节点作…

    编程技术 2025年3月6日
    200
  • C#.Net操作注册表RegistryKey

    看看registrykey的帮助就知道了,这个东西不复杂,比如: 1、加键加值  string appName = “PowerOffOnTime”;//获取执行该方法的程序集,并获取该程序集的文件路径(由该文件路径可以得到程序集所在的目录…

    2025年3月6日 编程技术
    200
  • .Net 玩单反的技巧

    这篇文章分享使用.net 玩单反 背景 一年多没逛园子了,换了个行业圈子,感觉自己太花心了点,不过能接触到不同的研发文化也算有点收获,游戏圈子的技术流、电商圈子的业务流、媒体圈子的艺术流等等。 这个应用产生的背景是让单反相机自动化,本身老大…

    2025年3月6日 编程技术
    200
  • 在.NET项目中使用PostSharp

    postsharp是一种aspect oriented programming 面向切面(或面向方面)的组件框架,适用在.net开发中,本篇主要介绍postsharp在.net开发中的相关知识,以及一些如日志、缓存、事务处理、异常处理等常用…

    2025年3月6日 编程技术
    200
  • 在Beego中使用Memcached实现缓存

    随着web应用的不断发展,缓存技术的重要性也越来越受到关注。缓存能够有效地减轻web应用的负载,提升响应速度。memcached作为一款高效的缓存工具,被广泛应用于各种web应用中。在本文中,我们将介绍如何在beego中使用memcache…

    编程技术 2025年3月6日
    200
  • 为什么知乎没有选择 Ruby, Java 等现在流行的语言而用了 Python? 加上 Twitter 也从 Ruby on Rails 迁到 Java,这是否说明还是成熟的技术靠谱?

    在架构设计完善的前提下,ruby,java,python,php,http://asp.net之间的编码时间差异应该不大吧。 回复内容: 作为Quora的模仿者,从开发的快捷性出发,最大可能的借鉴Quora的技术是必要的。而Quora用的正…

    编程技术 2025年3月5日
    200
  • 两种.NET定时发送邮件代码实例

    经常发邮件的朋友都知道,邮箱有个特殊功能,可以设定邮件发送时间,定时发送,这个功能是怎么实现的呢?接下来,小编给大家分享.net实现定时发送邮件的代码,有需要的朋友可以参考下 有时候我们或许会遇到想在某一个时刻给别人发送一封邮件,就像是在生…

    2025年3月5日
    200
  • .net实现后台登录验证

    这篇文章主要为大家详细介绍了.net后台页面统一验证是否登录的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了.net后台页面统一验证是否登录的具体代码,供大家参考,具体内容如下 首先新写一个PageBase类 …

    编程技术 2025年3月5日
    200
  • .NET用repeater实现分页效果的代码详解

    repeater控件是一个数据绑定容器控件,它能够生成各个项的列表,并可以使用模板定义网页上各个项的布局。本文对此进行详细介绍,下面跟着小编一起来看下吧 Repeater控件是一个数据绑定容器控件,它能够生成各个项的列表,并可以使用模板定义…

    编程技术 2025年3月5日
    200
  • .NET安装framework出现报错的处理教程

    这篇文章主要为大家详细介绍了win8/8.1系统安装.net framework 3.5出现0x800f0906代码错误的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 有效解决win8/8.1系统安装.net framewor…

    2025年3月5日
    200

发表回复

登录后才能评论