memcache 启动 储存原理 集群 一、 windows下安装启动 二、    作用 三、    存储原理 四、    集群搭建原理 五、    与Redis对比 六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


  启动memcache的后台服务程序:


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


  然后执行,telnet 127.0.0.111211来打开Telnet客户端:


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


  于是在“启动或关闭Windows功能”处,开启Telnet客户端


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


二、    作用


  2.1  分布式缓存

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

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

      

  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


  2.2    减少数据库压力

       我们所有的数据基本上都是保存在数据库当中的,每次频繁的存取数据库,导致数据库性能急剧下降,无法同时服务更多的用户,比如MySQL,特别频繁的锁表,那么我就可以Memcache来分担数据库的压力,也就是说可以做数据缓存,因为Memcache的读写性能可以说极致的完美。


三、    存储原理


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

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


四、    集群搭建原理


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

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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


      

五、    与Redis对比


       由于Redis也常用作分布式缓存,所以在自己用过二者之后,一个简单的体会如下(二者详细的对比,请到网上找专题即可):

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

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

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

       Memcache的集群配置非常非常简单,不需要配置服务器端,只需要在客户端初始化一个serverList即可;Redis需要配置服务器端。

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

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


六、    总结


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


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


  启动memcache的后台服务程序:


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


  然后执行,telnet 127.0.0.111211来打开Telnet客户端:


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


  于是在“启动或关闭Windows功能”处,开启Telnet客户端


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


二、    作用


  2.1  分布式缓存

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

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

      

  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


  2.2    减少数据库压力

       我们所有的数据基本上都是保存在数据库当中的,每次频繁的存取数据库,导致数据库性能急剧下降,无法同时服务更多的用户,比如MySQL,特别频繁的锁表,那么我就可以Memcache来分担数据库的压力,也就是说可以做数据缓存,因为Memcache的读写性能可以说极致的完美。


三、    存储原理


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

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


四、    集群搭建原理


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

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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


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


  memcache 启动 储存原理 集群
一、 windows下安装启动
二、    作用
三、    存储原理
四、    集群搭建原理
五、    与Redis对比
六、    总结


      

五、    与Redis对比


       由于Redis也常用作分布式缓存,所以在自己用过二者之后,一个简单的体会如下(二者详细的对比,请到网上找专题即可):

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

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

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

       Memcache的集群配置非常非常简单,不需要配置服务器端,只需要在客户端初始化一个serverList即可;Redis需要配置服务器端。

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

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


六、    总结


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