Memcache启动&存储原理&集群

一、 windows下安装启动

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

  

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

  

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

  

  启动memcache的后台服务程序:

  

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

  

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

  

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

  

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

  

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

  

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

  

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

  

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

二、    作用

  2.1  分布式缓存

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

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

  

  2.2    减少数据库压力

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

三、    存储原理

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

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

四、    集群搭建原理

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

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

  

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

  

五、    与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以它自己的优势:读写性能完美(没有提供主从复制,所有代码基本只考虑性能最佳);超简单集群搭建;开源;学习成本低,入门非常容易;丰富的成功案例等,成为了当代流行的分布式缓存框架。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 21:51:42

Memcache启动&存储原理&集群的相关文章

memcache 启动 储存原理 集群

一. windows下安装启动 首先将memcache的bin目录加入到Path环境变量中,方便后面使用命令: 然后执行 memcached –dinstall 命令安装memcache的服务: 然后去计算进的服务页面可以看到已成功安装: 启动memcache的后台服务程序: 在后台服务处看到memcache的后台服务已启动: 然后执行,telnet 127.0.0.111211来打开Telnet客户端: 结果发现没有开启Telnet的功能: 于是在"启动或关闭Windows功能"处,

MongoDB分片存储的集群架构实现

MongoDB分片存储的集群架构实现 如果需要存储大量数据,或者系统的读写吞吐量很大的时候,单个server就很难满足需求了.这个时候我们可以使用MongoDB的分片机制来解决这些问题. 分片的基本概念 分片(sharding)是一种水平扩展(horizontal scaling)的方式,把一个大的数据集分散到多个片服务器上,所有的片服务器将组成一个逻辑上的数据库来存储这个大的数据集.分片对用户(应用层)是透明的,用户不会知道数据很被存放到哪个片服务器上. 这种方式有两个好处: 分片之后,每个片

用Redis存储Tomcat集群的Session实现session共享

一.存储 前段时间,我花了不少时间来寻求一种方法,把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机.对使用用户零影响. 我的设想是使用集群来搞定,通过通知负载均衡Nginx,取下集群中的Tomcat节点,然后对Tomcat上的应用进行升级,再通知负载均衡Nginx,把Tomcat节点重新加载上去.依次这么做,把集群中的所有Tomcat都替换一次即可. 那么问题来了,在取下Tomcat节点和加载新Tomcat节点时如何做到对用户无影响呢?方法很简单,共享Session. 下面,我们用实例

Quartz使用(5) - Quartz的Job存储及集群部署

1. Job的存储与持久化 Quartz的JobStore接口定义了作业Job.触发器trigger.调度器Scheduler等数据存储机制.Quartz主要有两种Job存储类型:内存存储RAMJobStore和持久化存储JDBCJobStore.下面将对其一一介绍. 2. RAMJobStore RAMJobStore是将Quartz涉及到的Job.Trigger.Scheduler等信息存储在内存中,是Quartz默认使用且最有效的Job存储方式.但其缺点也显而易见,一旦Quartz程序停止

启动elasticsearch-head显示集群健康值:未连接

ES启动后,进行es header访问的话,使用localhost:9100会显示集群健康值未连接 2种情况(均为windows10环境下): 1:未在elasticsearch-6.8.0\config\elasticsearch.yml中进行ip配置 win+R--cmd--ipconfig查看本机ip 在elasticsearch.yml中将ip添加进去 network.host: 192.168.1.103 保存后重新启动ES,使用http:\\ip:9100进行可视化访问 2.如果你已

用Redis存储Tomcat集群的Session

本人花了不少时间来寻求一种方法,把新开发的代码推送到到生产系统中部署,生产系统要能够零宕机.对使用用户零影响. 我的设想是使用集群来搞定,通过通知负载均衡Nginx,取下集群中的Tomcat节点,然后对Tomcat上的应用进行升级,再通知负载均衡Nginx,把Tomcat节点重新加载上去.依次这么做,把集群中的所有Tomcat都替换一次即可. 那么问题来了,在取下Tomcat节点和加载新Tomcat节点时如何做到对用户无影响呢?方法很简单,共享Session. 下面,我们用实例来说明此方案.我们

windows下nginx+tomcat+memcache负载均衡tomcat集群session共享搭建

使用nginx 做负载均衡 memcached处理session共享  环境 windows 7  X64  java : jdk-7windows-x64.rar  nginx : http://nginx.org/en/download.html ,这里我们推荐下载稳定版(stable versions),本文采用nginx-1.8.0  tomcat:apache-tomcat-7.0.63 在同一台电脑上配置多个tomcat(本次采用两个tomcat来示范),修改 conf/server

RHCS集群原理概述

一. 什么是RHCS RHCS是Red Hat Cluster Suite的缩写,也就是红帽集群套件,RHCS是一个能够提供高可用性.高可靠性.负载均衡.存储共享且经济廉价的集群工具集合,它将集群系统中三大集群架构融合一体,可以给web应用.数据库应用等提供安全.稳定的运行环境. 更确切的说,RHCS是一个功能完备的集群应用解决方案,它从应用的前端访问到后端的数据存储都提供了一个行之有效的集群架构实现,通过RHCS提供的这种解决方案,不但能保证前端应用持久.稳定的提供服务,同时也保证了后端数据存

redis学习六 集群的原理(转载)

转载自 http://shift-alt-ctrl.iteye.com/blog/2285470 一.Redis Cluster主要特性和设计     集群目标 1)高性能和线性扩展,最大可以支撑到1000个节点:Cluster架构中无Proxy层,Master与slave之间使用异步replication,且不存在操作的merge.(即操作不能跨多个nodes,不存在merge层) 2)一定程度上保证writes的安全性,需要客户端容忍一定程度的数据丢失:集群将会尽可能(best-effort