Memcached 基础理论

特点:

1、协议实现简单,使用telnet或nc等命令就可以直接操作memcached存取数据

2、支持epoll/kqueue异步I/O模型,使用libevent作为事件处理通知机智

3、使用key -> value键值作为数据存储格式

4、使用全内存缓存,效率高,但服务重启数据会丢失

工作原理:

1、Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景

2、Memcached将数据缓存于内存中

3、Memcached是一款开发工具,它既不是一个代码加速器,也不是数据库中间件,其设计哲学思想主要反映在如下方面:

1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;
2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;
3. 各服务器间彼此无视:不在服务器间进行数据同步;
4. O/1的执行效率
5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;

适用场景:

1、网站包含了访问量很大(什么叫很大,那是多大?)的动态网页,因而数据库的负载将会很高, 且大部分数据库请求都是读操作;

2、数据库服务器的负载比较低,CPU 使用率却很高;

3、小型需要共享的数据,如 session 等临时数据;

4、缓存一些很小但是被频繁访问的文件。图片这种大点儿的文件就由 CDN(内容分发网络)来处理了。

不适用场景:

1、缓存对象的大小大于 1 MB, Memcached 本身就不是为了处理庞大的多媒体和巨大的二进制块而设计的,如果你任性,要存这么大的数据,可以自己修改源代码,它是开源的,不过请慎改;

2、key 的长度大于 250 字符(硬性要求);

3、环境不允许运行 memcached 服务,如虚拟主机;

4、应用运行在不安全的环境中,Memcached 未提供任何安全策略,仅仅通过 telnet 就可以访问到 memcached。数据安全越来越重要了,so,请把它放在防火墙后;

5、业务需要的是持久化数据时请使用数据库。

名词解释:

1、Page #分配给slab用于切割的内存空间,默认为1MB

2、Chunk #用户缓存记录的内存空间

3、slab class #特定大小的chunk组

时间: 2024-07-29 13:57:09

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 作者:长野雅广(