• Memcache启动&存储原理&集群


    一、 windows下安装启动


      首先将memcache的bin文件夹增加到Path环境变量中。方便后面使用命令:


      


      然后运行 memcached –dinstall 命令安装memcache的服务:


      


      然后去计算进的服务页面能够看到已安装成功:


      


      启动memcache的后台服务程序:


      


      在后台服务处看到memcache的后台服务已启动:


      


      然后运行。telnet 127.0.0.111211来打开Telnetclient:


      


      结果发现没有开启Telnet的功能:


      


      于是在“启动或关闭Windows功能”处。开启Telnetclient


      


      然后须要重新启动电脑。使得更改生效。

    接着再次运行telnet 127.0.0.1 11211来打开Telnetclient,成功打开:


      


      測试是否可用,我们再Telnetclient中打命令,stats。出现例如以下信息表示正常:


      


      然后我们存一个数据然后取出来:


      


      到此为止。说明我们的memcache已经安装成功,并启动。


    二、    作用


      2.1  分布式缓存

           随着我们从IT时代步入到DT时代,我们的软件架构也从单机到了集群、分布式。而。走向分布式的第一步就须要解决多台server共享登录信息的问题。

    推而广之,就是要解决多台server共享公共信息的问题。

           解决问题,我们能够将公共信息存储到状态server中,或者存储到数据库中,然后就是存储到我们的“分布式缓存”中等等。

    因为读取缓存加上网络传输的时间,要远远小于读取数据库(IO)的时间等,所以分布式缓存是解决问题的非常优的一种方案。

          

      


      2.2    降低数据库压力

           我们全部的数据基本上都是保存在数据库其中的,每次频繁的存取数据库,导致数据库性能急剧下降。无法同一时候服务很多其它的用户,比方MySQL,特别频繁的锁表,那么我就能够Memcache来分担数据库的压力。也就是说能够做数据缓存,由于Memcache的读写性能能够说极致的完美。


    三、    存储原理


           Memcache採用键值对存储方式。

    它本质是一个大的 hash表,key的最大长度为255个字符。最长过期时间为30天。

           它的内存模型例如以下:Memcache预先将可支配的内存空间进行分区(Slab)。每一个分区里再分为多个块(Chunk)最大1M。但同一个分区中块的大小是固定的。然后。插入数据时,会依据数据大小寻找最合适的块。然后插入,当然这样也就会有部分内存浪费,但可一定程度上降低内存碎片,整体上,利大于弊。当Memcache的内存满后。它清除旧数据的原则为:LRU闲置>过期>最少訪问。

    并且它採用的是惰性删除,它并没有提供监控数据过期的机制,而是惰性的。当查询到某个key的数据时。假设过期,那么直接抛弃。


    四、    集群搭建原理


           Memcache的集群-cluster搭建超级简单。根本不须要server端配置。它是通过client的驱动程序实现了集群的配置,并且配置超级简单。

           client实现集群的原理:首先client配置多台集群机器的ip和port的列表。然后client驱动程序在写入数据之前,首先对key做处理得到hash值后,对总的机器的个数进行取余。然后就选择余数相应的机器。


      


           例如以下图为一个C#存数据到Memcache集群的代码:


      


          

    五、    与Redis对照


           因为Redis也经常使用作分布式缓存,所以在自己用过二者之后,一个简单的体会例如以下(二者具体的对照。请到网上找专题就可以):

           首先二者都是key-value式存储。

           Memcache是多线程的(有对应的锁机制)。须要考虑线程安全问题。Redis是单线程的,不须要考虑线程安全问题。

      Memcache没有提供主从复制机制,容错性不好。(没有HA-高可用性);Redis提供主从复制。

           Memcache的集群配置很很easy,不须要配置server端。仅仅须要在client初始化一个serverList就可以。Redis须要配置server端。

           Memcache仅仅能做缓存,不能持久化。Redis是一个NoSql内存数据库,提供两种持久化机制。

           Redis提供五种value的类型,非常丰富(string /list/hash/set/zset);Memcache的数据类型相对单一


    六、    总结


      因为我们当下的一些问题,高并发訪问数据库的痛楚:死锁;磁盘的IO之痛:效率极低;多服务共享数据等。

    Memcache以它自己的优势:读写性能完美(没有提供主从复制,全部代码基本仅仅考虑性能最佳);超简单集群搭建。开源。学习成本低,入门很easy;丰富的成功案例等,成为了当代流行的分布式缓存框架。

  • 相关阅读:
    收集常用的.net开源项目
    前端兼容性
    IntelliJ IDEA 14 注册码生成器
    Web开发者的10个最好的云开发环境
    [置顶] 浅谈大型web系统架构
    简单的前端js+ajax 购物车框架(入门篇)
    CSS3 background-size图片自适应
    CSS clip:rect矩形剪裁功能及一些应用介绍
    Aspx 页面生命周期
    Asp.Net页面(母版页)加载顺序
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7016895.html
Copyright © 2020-2023  润新知