文章目录
  1. 1. Memcached
  2. 2. 构成
  3. 3. 设计理念
    1. 3.1. 简单的键值对存储
    2. 3.2. 一半/一半
    3. 3.3. 服务器间无关联
    4. 3.4. 缓存无效
    5. 3.5. 依赖

Memcached

Memcached是一款免费且开源、高性能、分布式内存对象缓存系统。旨在通过减轻数据库负载压力来加速动态Web应用。

Memcached将“键值对”形式的数据存储在内存中,“键值对”可以是任意的小的数据,比如strings 和 Object,这些数据来自数据库调用、API调用或者页面传送的数据。

Memcached非常强大,它的设计是基于快速部署、容易开发和解决面对海量数据缓存所出现的问题。它的API对于大部分编程语言都可适用。

构成

Memcached是一个开发工具,不是一个“代码加速器”,也不是一个数据库中间件。

它由以下部分构成:

  • 客户端软件:提供了一个可用的Memcached服务器的列表;

  • 基于Hash算法的客服端:根据“key”来选择服务器;

  • 服务端软件:将“键值对”存储在内部的一个hash表中;

  • LRU:决定何时丢弃旧数据;

设计理念

简单的键值对存储

服务端并不关心你的数据是怎样的。一个记录由:key、过期时间、选项标志、和元素数据构成。

它不关心数据结构,你必须存储那些序列化的数据。

一些简单的指令(incr/decr)用来操作底层数据。

一半/一半

Memcached 的实现分为两部分:客户端和服务端。

客户端负责选取哪台服务器来进行数据的读写;当无法连接服务器时应该做什么。

服务器端负责怎样存储和提取数据;如何丢弃数据和重用内存。

服务器间无关联

所有Memcached服务器节点间没有任何通信。它们不会同步,不会广播、不会复制。增加服务器即可增加可用内存。

缓存无效也非常简单:客户端删除数据或者直接覆盖原数据。

缓存无效

不是向所有服务器广播数据无效,客户端直接定位到存储数据的服务器来使数据失效。

依赖

参考资料:https://github.com/memcached/memcached/wiki

文章目录
  1. 1. Memcached
  2. 2. 构成
  3. 3. 设计理念
    1. 3.1. 简单的键值对存储
    2. 3.2. 一半/一半
    3. 3.3. 服务器间无关联
    4. 3.4. 缓存无效
    5. 3.5. 依赖