Memcached十问十答

1、Memcached是什么,有什么作用?

  Memcached是一种纯内存的,key-value,CS架构的数据库服务软件,主要用于数据库,web服务器的缓存,以减小数据库,web服务器的访问压力,尤其是对数据库,可以将经常被访问的数据缓存到memcache中,这是通过前端的 程序试实现的。对于常用的数据在写入的时候,不仅要往数据库中写入,还要往memcached内存中写入。

2、Memcached服务在企业集群架构中应用场景

  完整缓存

  热点缓存

  会话保持

3、Memcached服务在不同企业业务应用场景中的工作流程

  当程序对数据库中的数据更新的时候,会先处理数据库中的数据,然后再通知memcached中的数据对缓存的旧数据做更新(可以通过程序实现,也可以同属mysql的memca插件实现触发更新),总之,保持数据的一致性很重要。当memcad的缓存空降用完之后会根据LRU(less recently use)算法删除数据,当然在启动memcached的时候可以指定参数不适用LRU算法删除数据,而是报错。对于高并发的场景,或者服务重启的时候要做预热,将数据通过程序加载到缓存中。

4、Memcached服务分布式集群如何实现?

  1.通过程序实现,让不同的用户去请求相应的memcached服务器,当然要事先做好标记工作,哪一个用户的数据缓存在哪一个服务器上,这种方法比较笨,不智能。

  2.使用负载均衡器(nginx,tengien,haproxy)调度用户的请求分配给不同的memcached服务器

    问题:不同的服务器缓存的内容是不一样的,那么如何保证命中率呢?

    答:负载均衡器有多种调度算法可以使用ip_hash算法可以保证会话的一致性,该算法是通过取模运算实现的,hash值1/服务器数=hash值2,该算法会维护一个hash表当请求来的时候会查找该hash表,找到该请求和memcached服务器的对应关系,实现回话的一致性,保证缓存的命中率。但是该算法有一个缺陷,当memcached主机的数目发生变化的时候会使得之前的hash数据不准确,还要重新计算hash值。所以这个还不是最优的方式

  3.最优的方式是采用一致性hash调度算法,tengien,haproxy,nginx(编译的时候要加上一致性hash的模块)

    ./configure --add-module=./3thparty/ngx_http_consistent_hash-master

5、Memcached服务特点及工作原理是什么?

  CS架构模式

  协议简单

  支持epoll/kqueue 异步IO模型,使用libevent作为事件通知机制

  键值对数据类型

  纯内存,效率高

  支持分布式

6、简述Memcached内存管理机制原理?

  最早使用malloc内存分配机制,但是malloc机制会造成内存碎片,现在采用的是slab内存管理机制

  memcached将内存区分成若干个slab区(大小为1M)

  slab区分为若干的chunk内存块(不同的slab中的chunks的大小是不一样的)

  memcached维护了一内存分配的信息表,当需要写入数据的时候,会将数据写入所拥有的chunk的大小和数据大小最相符的slab分区中区,这样可以减少内存的浪费

 提示:和磁盘的inode,block比较类似

7、Memcached的删除原理与删除机制?

  memcached是惰性检测机制,不会主动检测数据是否过期,只有当get该数据的时候才会检测该数据是否过期,并且当该数据过期的时候memcached只会删除该数据的索引,并不会释放内存空间,只有当memcached调用LRU算法的嘶时候,或者当空间已满的时候才会释放内存空间

8、Memcached服务端与客户端的安装部署与使用测试

9、如何实现集群中的session共享存储?

10、如何获取MEMCACHED服务的状态信息,例如:命中率

  可以通过telnet方式登录到memcached中,使用stats命令查看memcached的信息

  通过memadmin

  nagios,cati,zabbix监控工具
11、通过Nagios监控Memcached需要监控哪些指标

  命中率

12、redis是什么,有什么作用?

13、memcached与redis的区别?

  memcached是纯内存的软件,不支持持久化缓存,服务器重启之后缓存数据就会消失

  redis可以将内存中的数据缓存到磁盘,可以实现持久化存储

时间: 2024-12-14 18:43:56

Memcached十问十答的相关文章

关于win下Memcached安装步骤

2天对我来说有点煎熬..数据量达到17w的时候 我本地执行查询速度特别慢! 请教了一些php大牛如何解决速度问题,在加了索引和优化sql后还是速度慢!我决定在win环境下用Memcached和memcache 来处理,先声明一下: memcache是php的拓展,memcached是客户端,复杂的说:Memcache模块提供了于memcached方便的面向过程及面向对象的接口,memcached是为了降低动态web应用 从数据库加载数据而产生的一种常驻进程缓存产品. 因为我本地用的是xampp集

memcached安装

今天有台服务器需要迁移业务安装memcached,以前没有安装过,按照网上步骤尝试了下,并且记录了安装过程. 安装包准备: libevent-1.4.14b-stable.tar.gz memcached-1.4.5.tar.gz 首先安装libevent: tar zxvf libevent-1.4.14-stable.tar.gz -C /usr/local/ cd libevent-1.4.14-stable/ ./configure -prefix=/usr/libevent make

Linux下安装搭建Memcached集群环境

Linux下安装搭建Memcached集群环境

linux编译安装memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载. 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度. Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以 用任何语言来编写,并通过memcached协议与守护进程通信. 1.memcached安装: 安装开发包:yum -y install gcc 安装memcached相应依赖组件: yum -y ins

(apache+tomcat集群+memcached番外篇)单台tomcat的session信息的2种持久化方式

为什么要实现搭建tomcat集群环境呢?主要因为单个tomcat无论从吞吐量和并发数上,会达到一定的极限.如果访问量超过单个tomcat的承受能力的话,tomcat一般要么拒绝提供服务,要么直接宕掉.所以,必须要依靠tomcat集群技术.举个最简单的例子,拿"送快件"比喻,如果一个人,5分钟送一件,一小时之内,送10个,一个人完全能胜任这项工作.假设现在到了双十一,要求1小时,送100个, 那怎么办?只能安排更多的人加入"送快件"这项工作中来.这其实和集群一个道理.

修改memcached服务的端口号

windows下修改memcached服务的端口号(默认端口:11211) 如果不是作为服务启动memcached的话,memcached -p 端口号就可以了. 通过修改注册表可以简单实现 运行:regedit打开注册表,搜索memcached或者按下面的目录查找: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 其中的ImagePath项的值为:"c:\memcached\memcached.exe&

基于nginx+tomcat的负载均衡以及memcached解决交叉存储

nginx是以多进程的方式工作的,有一个master进程和多个worker进程master进程用来管理worker进程(1)向各worker进程发送信号(2)监控worker进程,当一个worker进程出现异常后,会启动新的worker进程. master进程会先建立好需要监听的socket,fork函数生成子进程workers,继承scoket,一般来讲,当有连接进入后,所有accept在这个socket上面的进程都会收到通知,而只有一个进程会accept这个连接,其它都会失败.  --->

第八章 企业项目开发--分布式缓存memcached

注意:本节代码基于<第七章 企业项目开发--本地缓存guava cache> 1.本地缓存的问题 本地缓存速度一开始高于分布式缓存,但是随着其缓存数量的增加,所占内存越来越大,系统运行内存越来越小,最后系统会被拖慢(这一点与第二点联系起来) 本地缓存存于本机,其缓存数量与大小受本机内存大小限制 本地缓存存于本机,其他机器的访问不到这样的缓存 解决方案:分布式缓存 Jboss cache:缓存还存于本机,但是会同步更新到其他机器(解决了第三个问题,解决不了第一和第二个问题),如果缓存机器数量很多

memcached完全剖析–1. memcached的基础

系列文章导航: memcached完全剖析–1. memcached的基础 memcached全面剖析–2. 理解memcached的内存存储 memcached全面剖析–3. memcached的删除机制和发展方向 memcached全面剖析–4. memcached的分布式算法 memcached全面剖析–5. memcached的应用和兼容程序 翻译一篇技术评论社的文章,是讲memcached的连载.fcicq同学说这个东西很有用,希望大家喜欢. 发表日:2008/7/2 作者:长野雅广(