Memcached缓存技术原理及机制

Memcached基本概念

  • Memcached是danga的一个项目,最早是LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。
  • Memcached是一个高性能的分布式的内存对象缓存系统,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。(注: 摘自百度全科)

一句话,memcached是一种缓存技术,可以把数据存放到内存中,从而通过内存访问提速,memcached技术的主要目的就是提速;在memcached中维护了一张大的hash表,该表在内存中,表的结构式key-value。

查询数据的三种方法

  1. 直接查询数据库(慢)
  2. 使用真静态(快)
  3. 直接操作内存(极快)

Memcached 简要原理

  • 使用memcached技术,先访问内存表,如果在memcached中没有存放查询结果,访问数据库,然后把查询的结果放入到memcached;如果查询的数据已经存在内存中,就直接访问内存。
    Memcached缓存技术原理及机制_第1张图片
  • memached的key一般是字符串,且唯一;value可以存放字符串、数值、数组、对象、布尔、二进制数据、null

memached机制深入了解
①基于c/s架构 ,协议简单

  • c/s架构,此时memcached为服务器端,我们可以使用如PHP,c/c++等程序连接memcached服务器
  • memcached的服务器客户端通信并不使用XML等格式,而使用简单的基于文本行的协议。因此,通过telnet也能在memcached上保存数据、取得数据

②基于libevent的事件处理

  • libevent是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:Windows/Linux/BSD/Solaris等操作系统的的事件处理。
  • Memcached 使用libevent来进行网络并发连接的处理,能够保持在很大并发情况下,仍旧能够保持快速的响应能力。

③内置内存存储方式

  • 为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于近期最少使用算法LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。

④基于客户端的分布式

  • memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现
    Memcached缓存技术原理及机制_第2张图片

你可能感兴趣的:(MySQL,技术进阶)