`

memcached的基础

 
阅读更多
memcached是什么?
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。
许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。
这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

图1 一般情况下memcached的用途

memcached的特征
memcached作为高速运行的分布式缓存服务器,具有以下的特点。
协议简单
基于libevent的事件处理
内置内存存储方式
memcached不互相通信的分布式
协议简单
memcached的服务器客户端通信并不使用复杂的XML等格式, 而使用简单的基于文本行的协议。因此,通过telnet 也能在memcached上保存数据、取得数据。下面是例子。
$ telnet localhost 11211
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
set foo 0 0 3     (保存命令)
bar               (数据)
STORED            (结果)
get foo           (取得命令)
VALUE foo 0 3     (数据)
bar               (数据)
协议文档位于memcached的源代码内,也可以参考以下的URL。
http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt
基于libevent的事件处理
libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。
libevent: http://www.monkey.org/~provos/libevent/
The C10K Problem: http://www.kegel.com/c10k.html
内置内存存储方式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。 另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。 memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。 关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。
memcached不互相通信的分布式
memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。本连载也将介绍memcached的分布式。


图2 memcached的分布式
  • 大小: 28.2 KB
  • 大小: 11.7 KB
分享到:
评论

相关推荐

    memcached基础-参考

    【memcached基础详解】 memcached 是一款高效的数据缓存系统,其主要目的是为了缓解数据库的访问压力,提高网站系统的响应速度。它通过将常用数据存储在内存中,减少了对数据库的直接操作,从而提升了整体性能。 1...

    Memcached基础及示例

    ### Memcached基础及示例详解 #### 一、Memcached简介 **Memcached**是一个免费开源、高性能且分布式的内存对象缓存系统。它通过在内存中为特定数据(通常是字符串或简单对象)构建key-value形式的小块数据存储,...

    memcached工具类源码

    1. **Memcached基础概念** - **内存存储**:Memcached基于内存进行数据存储,这意味着它的读取速度非常快,但同时也意味着数据不持久化,如果服务器重启,所有数据将丢失。 - **分布式缓存**:它可以在多台服务器...

    memcached(十一)memcached-session-manager

    1. **Memcached基础**:首先,教程可能会介绍memcached的基本概念,如其内存存储模型、key-value结构,以及它如何提供快速的缓存服务。 2. **Session管理问题**:在Web开发中,session管理是关键,特别是在高并发...

    memcached UI Setup

    1. **memcached基础**:memcached是一个高性能的分布式内存对象缓存系统,适用于动态Web应用,通过减少数据库负载来提高速度。它的工作原理是将数据存储在内存中,以便快速访问。 2. **分布式架构**:memcached支持...

    MemCached 全面剖析 memcached.pdf(中文)

    #### 一、MemCached 基础介绍 **1.1 MemCached 是什么?** MemCached 是一个高性能、分布式内存对象缓存系统,旨在减轻数据库负担,加速动态Web应用的速度。它通过在内存中缓存数据和对象来减少对后端数据库或位于...

    memcached for java client 例子

    1. **Memcached基础**:Memcached是基于内存的键值对存储系统,用于临时存储数据,以提高数据访问速度。它支持多线程,具有简单的设计理念,能够快速部署和扩展。 2. **Java客户端库**:为了在Java应用中使用...

    memcached-win32-1.4.4-14+Enyim.Caching.2.12

    1. **memcached基础**:memcached是一种轻量级的缓存系统,主要用于存储临时数据,减少对数据库的访问,提高系统响应速度。它使用键值对存储数据,并支持多语言接口。 2. **分布式特性**:memcached支持分布式存储...

    memadmin一款管理memcached的图形工具

    **memcached基础知识** Memcached的工作原理是基于键值对存储,它可以存储任何序列化的对象,如字符串、整数、二进制数据等。它通过将数据存储在内存中,提供高速的数据读取速度,适用于高并发的场景。Memcached...

    阿里软件java版memcached安装文件和demo项目

    1. **Memcached基础**:Memcached是一种基于内存的键值存储系统,它支持多语言,适用于缓存非结构化数据,如session、配置信息等,以提升数据访问速度。 2. **Java客户端**:在Java环境中,通常使用如spymemcached...

    memcached-1.2.1-win32.rar

    **memcached基础知识** 1. **什么是memcached?** - Memcached是一个高性能、分布式内存对象缓存系统,它可以临时存储数据,减少对数据库的访问,从而提高整体系统性能。 2. **工作原理** - Memcached基于键值...

    memcached+nginx使用文档

    **一、Memcached基础** 1. **工作原理**:Memcached基于键值对存储,将数据缓存在内存中,通过网络访问。它的设计目标是简单快速,适合处理大量小数据,如网页碎片、会话状态等。 2. **安装与配置**:在Linux环境...

    memcached各种序列化策略之session共享

    1. **Memcached基础**:Memcached是一个开源的、分布式的内存对象缓存系统,用于存储临时的数据,如session。它通过网络通信,提供key-value存储服务,支持多种编程语言的客户端。 2. **Session共享**:在分布式...

    memcached面试专题.pdf

    ### Memcached基础知识与面试核心知识点解析 #### 一、Memcached的工作原理 Memcached是一种高性能、分布式内存对象缓存系统,用于加速动态Web应用程序的速度,减少数据库负担。它通过在内存中缓存数据来提高应用...

    memcached套装

    1. **memcached基础知识**:memcached是一个分布式内存缓存系统,它的工作原理是将数据存储在内存中,以快速响应来自客户端的请求,避免频繁的数据库查询。 2. **Linux环境下的安装**:在Linux系统中安装memcached...

    memcached缓存

    2. **Memcachedb**:Memcachedb是在memcached基础上增加了持久化功能的版本,但在性能上略逊于纯粹的memcached。 **六、优化与注意事项** 1. **内存分配**:合理预估内存需求,避免过度分配导致资源浪费,同时也要...

    C#版Memcached监控管理工具

    1. **Memcached基础**:理解Memcached的工作原理、数据结构和操作命令,是使用此工具的前提。 2. **C#编程**:工具的开发语言是C#,需要掌握.NET Framework或.NET Core的相关知识,以及C#面向对象编程的基本概念。 3...

    memcached之客户端memadmin安装

    1. **memcached基础**:理解`memcached`的基本工作原理,包括其键值对存储模型,分布式哈希以及内存管理机制。 2. **memadmin功能**:`memadmin`客户端提供了哪些功能,如查看`memcached`的状态,添加/删除键值对,...

Global site tag (gtag.js) - Google Analytics