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组


你可能感兴趣的:(数据库,服务器,服务端,工作原理,加速器)