memcache 启动 储存原理 集群

1、 windows下安装启动


  首先将memcache的bin目录加入到Path环境变量中,方便后面使用命令:mysql


  


  而后执行 memcached –dinstall 命令安装memcache的服务:redis


  


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


  


  启动memcache的后台服务程序:数据库


  


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


  


  而后执行,telnet 127.0.0.111211来打开Telnet客户端:缓存


  


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


  


  因而在“启动或关闭Windows功能”处,开启Telnet客户端服务器


  


  而后须要重启电脑,使得更改生效。接着再次执行telnet 127.0.0.1 11211来打开Telnet客户端,成功打开:网络


  


  测试是否可用,咱们再Telnet客户端中打命令,stats,出现以下信息表示正常:多线程


  


  而后咱们存一个数据而后取出来:


  


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


2、    做用


  2.1  分布式缓存

       随着咱们从IT时代步入到DT时代,咱们的软件架构也从单机到了集群、分布式。而,走向分布式的第一步就须要解决多台服务器共享登陆信息的问题。推而广之,就是要解决多台服务器共享公共信息的问题。

       解决这个问题,咱们能够将公共信息存储到状态服务器中,或者存储到数据库中,而后就是存储到咱们的“分布式缓存”中等等。因为读取缓存加上网络传输的时间,要远远小于读取数据库(IO)的时间等,因此分布式缓存是解决这个问题的很优的一种方案。

      

  


  2.2    减小数据库压力

       咱们全部的数据基本上都是保存在数据库当中的,每次频繁的存取数据库,致使数据库性能急剧降低,没法同时服务更多的用户,好比MySQL,特别频繁的锁表,那么我就能够Memcache来分担数据库的压力,也就是说能够作数据缓存,由于Memcache的读写性能能够说极致的完美。


3、    存储原理


       Memcache采用键值对存储方式。它本质是一个大的 hash表,key的最大长度为255个字符,最长过时时间为30天。

       它的内存模型以下:Memcache预先将可支配的内存空间进行分区(Slab),每一个分区里再分为多个块(Chunk)最大1M,但同一个分区中块的大小是固定的。而后,插入数据时,会根据数据大小寻找最合适的块,而后插入,固然这样也就会有部份内存浪费,但可必定程度上减小内存碎片,整体上,利大于弊。当Memcache的内存满后,它清除旧数据的原则为:LRU闲置>过时>最少访问。并且它采用的是惰性删除,它并无提供监控数据过时的机制,而是惰性的,当查询到某个key的数据时,若是过时,那么直接抛弃。


4、    集群搭建原理


       Memcache的集群-cluster搭建超级简单,根本不须要服务器端配置。它是经过客户端的驱动程序实现了集群的配置,并且配置超级简单。

       客户端实现集群的原理:首先客户端配置多台集群机器的ip和端口的列表。而后客户端驱动程序在写入数据以前,首先对key作处理获得hash值后,对总的机器的个数进行取余,而后就选择余数对应的机器。


  


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


  


      

5、    与Redis对比


       因为Redis也经常使用做分布式缓存,因此在本身用过两者以后,一个简单的体会以下(两者详细的对比,请到网上找专题便可):

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

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

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

       Memcache的集群配置很是很是简单,不须要配置服务器端,只须要在客户端初始化一个serverList便可;Redis须要配置服务器端。

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

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


6、    总结


  因为咱们当下的一些问题,高并发访问数据库的痛楚:死锁;磁盘的IO之痛:效率极低;多服务共享数据等。Memcache以它本身的优点:读写性能完美(没有提供主从复制,全部代码基本只考虑性能最佳);超简单集群搭建;开源;学习成本低,入门很是容易;丰富的成功案例等,成为了当代流行的分布式缓存框架。

相关文章
相关标签/搜索