首页 > 代码库 > Memcached知识整理之整体认识

Memcached知识整理之整体认识

最近公司的项目中用到了memcached,但是自己仅仅是停留在使用的层面对memcached的运行机制和核心理念没有很好的认识。

今天整理一些文章,整体认识一下memcached

1、什么是memcached

  memcached是一个高性能的分布式内存对象缓存系统,用于动态web应用,以减少数据库负载。它通过在内存中缓存数据和对象来减少数据库的访问次数从而提高网站的读取速度。它基于Key/Value的hashmap,其守护进程是使用C语言实现的但客户端可以使用任何语言来编写,并通过memcached协议与守护进程通信。

                                                             ----百度百科

2、memcached的特点

  1)协议简单

    memcached服务端和客户端的通信不使用xml,而是使用简单的基于文本的协议

  2)基于libevent的事件处理

    libevent是个程序库,他将Linux 的epoll、BSD类操作系统的kqueue等时间处理功能封装成统一的接口。memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能

  3)内置内存存储方式

    为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached,重启操作系统会导致全部数据消失。另外,内容容量达到指定的值之后memcached会根据LRU(Least Recently Used )算法自动删除不适用的缓存。

  4)不互相通信的分布式

    memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。他的分布式主要是通过客户端实现的。

(个人理解的是memcached部署在多台机器上,客户端将不同的数据缓存到不同的memcached服务器从而实现memcached的分布式)

3、memcached的适用场景

  1)数据库负载较高,而且读操作比较频繁

  2)被频繁访问的小文件,而且文件不会频繁更改

  3)缓存一些session或临时数据

  4)不同应用程序数据共享

4、memcached不适用场景

  1)文件比较大或者流式二进制块

  2)存储对象key大于250字符

  3)数据需要持久化

 

 

  

Memcached知识整理之整体认识