memcached—理论基础

来源:互联网 发布:工作站品牌 知乎 编辑:程序博客网 时间:2024/04/30 11:54

memcached,嗯,memory cache
memcached是免费的、开放源代码的、高性能、分布式的内存对象缓存系统,通常用来减轻数据库负载、提升动态网页应用。memcached是按key-value方式存储在内存中任意小块数据,这些数据可能是来自数据库访问、API调用、也可能是一些页面渲染。下次访问时,从memcached中读取代替重新请求

组成

  1. 客户端,列出一系列可用的memcached服务器
  2. 基于客户端的哈希算法,会根据输入的key来选择具体的memcached服务器
  3. 服务器,存储key-value在哈希表中
  4. 服务端算法,决定何时扔掉过期的数据,恢复内存

memcached特性

memcached简单且强大,它的简单设计促进了易于部署、易于开发,并且解决了大数据量缓存中面临的大多数问题。memcached提供了多种流行语言版本的API,比如:C/C++,PHP,Java,Python,Ruby,Perl,Windows / .NET,MySQL,PostgreSQL,Erlang,Lua,Lisp dialects等等,详细的可以参考:https://code.google.com/p/memcached/wiki/Clients(google的,应该需要翻墙)。最核心的是,memcached采用非常简单的key-value存储

简单的key-value存储

每个项目由一个key、一个过期时间、可选的标志(32位整数)、存储的具体数据,服务器不关心具体的数据结构

一半在客户端,一半在服务器

memcached的实现,一半放在了客户端,一半放在了服务器。客户端知道如何把项目发送到特定的服务器,当服务器连接不上时应该怎么做,如何从服务器抓取数据。服务器知道如何接收和存储数据,如何让项目过期

多个服务器间互不通信

多个memcached服务器是不知道对方的存在的,没有通信,也没有同步。这也意味着添加多少服务器就会增加你所期望的功能,增加一个服务器,就会增加该服务器的全部容量,这个不同于高可用性中多个服务器

始终是O(1)

每条命令每次耗时大致相等

忘记数据功能

memcached默认为LRU(Least Recently Used)缓存,另外每个项目都可以设置一个过期时间(最长为30天,30*24*60*60秒)

失效

memcached集群,使数据失效是一个琐碎的事情,memcached客户端会直接让指定服务器上的项目失效,而不是广播到全部的服务器上

参考文献

源码:https://github.com/memcached/memcached
项目:https://code.google.com/p/memcached/(详细的介绍可以参考这个网页)
主页:http://www.memcached.org/

0 0
原创粉丝点击