HTML5技术

ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 - 奔跑吧!小郭

字号+ 作者:H5之家 来源:H5之家 2017-01-01 13:00 我要评论( )

ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存part 1:给我点时间,允许我感慨一下2016年 正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完美的句号,回顾2016年,感受颇多,感恩那些帮助我的人。展望2017年,我相信一定会遇到一个更好

       ASP.Net MVC4+Memcached+CodeFirst实现分布式缓存 part 1:给我点时间,允许我感慨一下2016年

  正好有时间,总结一下最近使用的一些技术,也算是为2016年画上一个完美的句号,回顾2016年,感受颇多,感恩那些帮助我的人。展望2017年,我相信一定会遇到一个更好的自己。附上自己喜欢的一张图片:

  

好了~~~装逼结束,下面开始说说如何实现分布式缓存在项目中的应用。

part2:先分析以下需求

  软件架构从单机到分布式遇到的问题(当然这是一个很深的问题,由于能力有限今天就说说如何实现用户信息的分布式存储的问题),也就是:走向分布式第一步:多台机器共享用户登录状态,该如何实现?例如:现在有三台机器组成了一个web的应用集群,其中一台机器用户登录,然后其他另外两台机器共享登录状态?具体请看下面的图示:

问题:如果有一个用户第一次登陆的时候,负载均衡把该用户分配到IIS1这台服务器上,该用户的信息就会被保留到IIS1这台服务器上,但是如果该用户再次访问其他的web资源的时候,被分配到IIS2上,这是IIS2中,没有改用户的信息,会发生什么?该怎么解决?该选用什么介质来保存状态比较合适?

 从图中可以看出就是保存对应用户的信息,可能有人会用下面的几种方法:1)直接保存到进程内session中;2)使用ASP.Net进程外session;3)用数据库存储当前登录状态;4)微软的状态服务器

当然了,使用上面的三种方法不是不可以,但是从网站的整体性能上考虑,确实不太完美,影响系统性能。下面来一一分析这三种方法的缺点:

1)直接保存到进程内session中

缺点:IIS中由于有进程回收机制,系统繁忙的时候session回丢失,IIS重启也会造成session的丢失,这样用户就要重新登录或重新添加购物车、验证码等再放到session中。如果要是把重要敏感的数据放到session中,这是在作死的节奏~~~~

2)使用ASP.Net进程外session  3)用数据库存储当前登录状态

缺点:这两种方式效率会比较慢,性能也不是很好,而且无法捕获session的end事件。

4)微软的状态服务器

缺点:性能不好。

下面欢迎Memcached登场!
  • 为什么要使用Memcached?
  • 1)高并发访问数据库的痛:死锁

    2)磁盘IO之痛

    3)读写性能完美

    4)超简单的集群搭建Cluster

    5)开源

    6)性能最佳

    7)丰富的成功案例

  • Memcached介绍
  • Memcached是一个高性能的支持分布式的内存存储系统。你可以把他看成一个巨大的hash表。形式入:

    Key(键)                           Value(值)

    唯一键值(String)                   基本数据(整型, 浮点型,字串,布尔)  ,复合类型 (数组, 对象) ,特殊类型(NULL, 不能存放资源), 二进制数据(图片,视频,音频)

    注意:Redis在存入对象的时候,不能直接存入,而是要先序列化,然后再存入,使用的时候,再反序列化。

  • Memcached的安装和配置(在windows安装)
  • (1)   下载安装文件 memcached.exe

    (2)   安装指令cmd>{%mem%}/memcached.exe -d  install

    (3)   使用cmd>{%mem%}/memcached -d start 【启动】

    如果启动成功,我们可以使用

    cmd>netstat -an

    如果发现有一个 11211端口在监听则说明你的服务OK

    补充:

    我们也可以把memcached当做一个程序来使用,

    cmd>{%mem%}/memcached.exe -p 端口号

    (4)   使用telnet工具登录到Memcached 中进行操作

    cmd>telnet  127.0.0.1  11211

    注意:Memcached安装不成功的原因和解决

    可能安装失败的原因分析

    6.1 如果你是用win7,win8系统,他对安全性要求高,因此,需要大家使用管理员的身份来安装和启动. 具体是 程序开始===>所有程序==》附件==》cmd(单击右键,选择以管理员的身份来执行)

    6.2 存放memcache.exe 目录不要有中文或者特殊字符

    6.3 安装成功,但是启动会报告一个错误信息,提示缺少xx.dll ,你可以从别的机器拷贝该dll文件,然后放入到system32下即可,并执行【然后打开“开始-运行-输入regsvr32 /s MSVCR71.dll”,回车即可解决错误提示!】,这是因为有些电脑上装的操作系统是阉割版的。

    6.4 如果上面三个方法都不可以,你可以直接这样启动mem

    cmd>memcached.exe  -p  端口 【这种方式不能关闭窗口】

  • 使用Telnet操作Memcached
  • 首先要登录到mem

    cmd>telnet 127.0.0.1  11211

    (1 ) 添加

          举例

           add  key1 0  60 5

    (2) 查询

          get key

          举例

          get key1

    (3) 修改

          有两种

          set key 0 效时间 数据大小

          举例

       set key1 0 60 5

          replace  key 0 效时间 数据大小

     

    (4) 删除

    delete key

    举例

    delete key1

    还有一种方式:

    flush_all

    (1)   查看mem的使用状态

    为了大家可以详细了解,再附上一张图片:

    (2)   其它指令

  • Memcached机制深入了解
  • 1)基于c/s架构,协议简单:

    c/s架构,此时memcached为服务器端,我们可以使用如PHP,c/c++等程序连接memcached服务器。

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

    2)内存处理的算法:

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6) - 三生石上

      【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6) - 三生石上

      2016-12-27 13:00

    • 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

      【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

      2016-12-23 17:00

    • ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 - 路过秋天

      ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑

      2016-11-20 16:00

    • 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证 - 微软一站式示

      在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证

      2016-11-20 15:00

    网友点评
    p