Memcached
Memcached
Memcached是一款免费且开源、高性能、分布式内存对象缓存系统。旨在通过减轻数据库负载压力来加速动态Web应用。
Memcached将“键值对”形式的数据存储在内存中,“键值对”可以是任意的小的数据,比如strings 和 Object,这些数据来自数据库调用、API调用或者页面传送的数据。
Memcached非常强大,它的设计是基于快速部署、容易开发和解决面对海量数据缓存所出现的问题。它的API对于大部分编程语言都可适用。
构成
Memcached是一个开发工具,不是一个“代码加速器”,也不是一个数据库中间件。
它由以下部分构成:
客户端软件:提供了一个可用的Memcached服务器的列表;
基于Hash算法的客服端:根据“key”来选择服务器;
服务端软件:将“键值对”存储在内部的一个hash表中;
LRU:决定何时丢弃旧数据;
设计理念
简单的键值对存储
服务端并不关心你的数据是怎样的。一个记录由:key、过期时间、选项标志、和元素数据构成。
它不关心数据结构,你必须存储那些序列化的数据。
一些简单的指令(incr/decr)用来操作底层数据。
一半/一半
Memcached 的实现分为两部分:客户端和服务端。
客户端负责选取哪台服务器来进行数据的读写;当无法连接服务器时应该做什么。
服务器端负责怎样存储和提取数据;如何丢弃数据和重用内存。
服务器间无关联
所有Memcached服务器节点间没有任何通信。它们不会同步,不会广播、不会复制。增加服务器即可增加可用内存。
缓存无效也非常简单:客户端删除数据或者直接覆盖原数据。
缓存无效
不是向所有服务器广播数据无效,客户端直接定位到存储数据的服务器来使数据失效。
依赖
- libevent (libevent-dev)