memcached缓存技术简介

来源:互联网 发布:淘宝冠军 编辑:程序博客网 时间:2024/06/05 06:39

memcached是一个高性能的分布式的内存对象缓存系统,使用这个缓存项目可以分担数据库的压力构建大负载的网站。通过在内存里维护一个统一的巨大的hash表,并根据一套算法维护数据操作,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。它使用非阻塞的网络IO可以应对任意多个连接。

一般来讲,从内存获取数据要比从数据库和磁盘获取速度更快。在第一次访问数据时需要到数据库中获取,然后将其放置在memcached的内存中,之后的访问都直接从内存中访问,以提高访问速度。

操作memcached服务也就是一般的增删改查。许多语言都可以操作memcached。可以通过telnet程序操作。可以通过memcache扩展和memcached扩展(扩展其实就是封装的一些操作函数,一般是动态库的形式)和socket源码操作memcached服务。

memcached服务有以下几个特点:

基于c/s架构 ,协议简单(基于文本行的协议)。

基于libevent的事件处理,memcached 使用libevent来进行网络并发连接的处理,在很大并发情况下,仍旧能够保持快速的响应能力。

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

基于客户端的分布式,memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个memcached不会互相通信以共享信息。怎样进行分布式完全取决于客户端的实现。memcached服务的数据不是同步的, 数据是分布的;把哪个数据放入到哪个memcached服务是由客户端决定的,memcache对象有相应的hash算法;   当执行addServer的时候,并不是立即去连接memcached服务,而是通过计算,hash后才去决定连接哪个memcached服务,因此当你大量加入服务器到连接池,没有多余开销。

什么样的数据适合放入memcached中?变化频繁,具有不稳定性的数据 (比如用户在线状态、在线人数..);门户网站的新闻等,觉得页面静态化仍不能满足要求,可以放入到memcache中。

什么样的数据不适合放入memcached中?(银行,股票,证券系统.)、过大的数据不能放入到memcache(优酷网.)

一般来讲,如果是一个小网站,pv值不大,就不考虑使用memcached了;变化频繁,查询频繁,但是不一定写入数据库,这种情况适合memcached;变化频繁, 一变化就要入库比如股票,金融系统不适合memcached。

另一种与memcached服务类似功能的是Redis(Key/value型),将数据保存在内存中,并定时向硬盘中同步。

0 0
原创粉丝点击