阅读更多

8顶
1踩

编程语言

转载新闻 推荐charlee:memcached完全剖析

2008-07-15 11:08 by 资深编辑 withyou 评论(3) 有9622人浏览

推荐charlee翻译的memcached完全剖析系列。

 

memcached是什么?

memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixihatenaFacebookVox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。

许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。

这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。

memcached-0001-01.png

图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。

基于libevent的事件处理

libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能 封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。 关于事件处理这里就不再详细介绍,可以参考Dan Kegel的The C10K Problem。

内置内存存储方式

为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。 由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。 另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。 memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。 关于内存存储的详细信息,本连载的第二讲以后前坂会进行介绍,请届时参考。

memcached不互相通信的分布式

memcached尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。 各个memcached不会互相通信以共享信息。那么,怎样进行分布式呢? 这完全取决于客户端的实现。本连载也将介绍memcached的分布式。

memcached-0001-02.png

图2 memcached的分布式

 

全文阅读:

memcached完全剖析–1. memcached的基础

memcached全面剖析–2.理解memcached的内存存储

来自: idv2.com
8
1
评论 共 3 条 请登录后发表评论
3 楼 lost_alien 2009-11-11 18:18
受教了
2 楼 itbright 2008-07-16 08:36
学习一下,
1 楼 AllenZhang 2008-07-15 13:13
对于使用memcache很有帮助阿

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • C++ LinuxWebServer项目(6)压力测试与优化思考

    压力测试与服务器优化思考

  • C++单元测试、压力测试、快速测试工具

    NULL 博文链接:https://jacky-dai.iteye.com/blog/2276461

  • Purify与valgrind,检测内存泄露和访问问题的工具

    Valgrind 会监视程序的内存访问情况、性能瓶颈等,并生成详细的报告,帮助开发人员找出潜在的问题并改进代码。Valgrind 是一个强大的开源工具,用于检测内存泄漏、内存错误和性能问题。Valgrind 的主要组件包括 Memcheck、Cachegrind、Callgrind 等,每个组件都有不同的功能和用途。然后通过工具提供的命令行或界面功能运行目标程序,Purify 会监视程序运行时的内存分配和释放情况,检测潜在的内存错误,并生成相应的报告供开发人员分析和修复。

  • C++语言的压力测试

    压力测试是一种软件测试类型,通过施加超过系统设计容量的负载,来检查系统的稳定性、资源消耗、响应时间及性能瓶颈。它旨在发现系统的最大承载能力及其行为特征,以确保在极端条件下的正常运行。

  • 探索Purify:一款强大的代码清理与优化工具

    探索Purify:一款强大的代码清理与优化工具 purifyAn HTML Purifier / Sanitizer for Laravel项目地址:https://gitcode.com/gh_mirrors/pur/purify 在编程世界中,保持代码的清晰和整洁是至关重要的。这就是的原因——一个旨在帮助开发者自动清理并优化JavaScript、TypeScript及Vue.js应用的工具。...

  • c++ http服务器之Apache工具ab压力测试(nginx与brpc)

    ab全称为:apache bench,官方注释为:Apache超文本传输协议(HTTP)的性能测试工具。

  • purify内存检测工具

    purify内存检测工具

  • 游戏思考26:游戏服务器压力测试文档(新增linux相关命令,02/10未完待续)

    一、压力测试关注点 二、计算最耗时的加载操作 1)从数据库读取数据,对加载的类型进一步划分各种类型,计算最耗时操作 2)查看CPU随着在线人数的变化所占百分比 3)查看内存变化 4)备注

  • ComfyUI【基础篇】:ComfyUI插件详解,附ComfyUI插件的下载方式示例

    我们知道,ComfyUI作为一个基于Stable Diffusion的AI绘画创作工具,为用户提供功能丰富和灵活的操作方式。它主要是通过节点流程的方式让用户能够更加精准地定制工作流,而 ComfyUI 插件则进一步扩展了其能力,使用户能够根据自己的需求定制和增强工作流程。今天我们重点来了解一下ComfyUI的插件机制以及插件的安装方法。

  • C/C++内存问题检查利器——Purify

    转自 http://blog.csdn.net/haoel/article/details/2900 陈皓 一、           引言   我们都知道软件的测试(在以产品为主的软件公司中叫做QA—Quality Assessment)占了整个软件工程的30% -50%,但有这么一种说法,即使是最优秀测试专家设计出来的测试案例,也无法彻底地检测到内存上的问题。

  • C++实现服务器压力测试框架

    C++实现服务器压力测试框架 flyfish 2015-3-9 模拟大量客户端对服务器进行压力测试框架 头文件 #pragma once #include #include #include #include #include class CSession: public boost::enable_shared_from_this { public:

  • 基于c++语言的压力测试应用软件

    非常好用的,应用于c++语言的压力测试软件。

  • 如何在linux下安装Purify

    安装Rational Purify 运行解压目录下的的rs_install程序. rs_install程序包括安装向导会提示你安装软件: 配置许可证服务器. 安装purify产品许可. 安装选择的Rational的产品和文件

  • C/C++内存问题检查利器—Purify (五)

    本文来自CSDN博客,转载:http://blog.csdn.net/haoel/archive/2003/12/16/2904.aspx十、   设置WatchPoint你可以在你的程序中,对你所想监控的程序设置一些WatchPoint,以方便于你对程序进行调试,或更容易找出问题的原因。就像我前面说,Purify可以找到你的内存泄露,但其不能找到内存泄露的原因,你可以通过设置WatchP

  • C/C++内存问题检查利器—Purify (四)

    七、             Purify的退出码 像UNIX下的软件,一般都会提供和别的应用程序的接口,像上面的生成文本文件,也是给别的应用程序提供接口的一种方式。这里,我们所要讲述的是Purify的退出码,我们知道程序都有退出码,以提供给别的程序或操作系统自己运行的信息。被Purify编译过的程序,你可以通过指定-exit-status参数来告诉Purify是否用Purify的退出码,如果这

  • purify c/c++

    http://www.360doc.com/content/07/0926/17/38907_772402.shtml#

  • Linux Purify命令

    一、简介 在C/C++的软件开发中,没有任何一种工具可以让你的应用程序避免引入内存问题,但是我们可以使用诸如Purify这样的工具对已经做好了的程序进行内存问题的检查。Purify的强大之处是可以找到应用程序中全面的内存问题,并可以和GDB/DBX等调试器以配合使用,让你对你的内存错误一目了然。 Purify是一个Run-Time的工具,也就是说只有在程序运行过程中,根据程序的运行情况来查看在某...

  • 内存泄露调试经验

    使用mallinfo确定是否有内存泄露:static struct mallinfo mi1,mi2;static struct timeval oldTime, currentTime;#define MALLOC_STAT_TIME   (60)void sk_factory_test_malloc_stat(void){    gettimeofday (&currentTime, ...

  • 如何定位c++内存泄露

    在进行C++开发时,如果在windows平台上,使用MFC,则可以自动检测内存泄露,如果是win32或者console程序,不使用MFC,则需要自己进行处理。 下面是在总结的一些方法,均来自网上,也经历了实际检验,在此备份。     1.  利用 KDetectMemoryLeak.h来完成类似MFC重定义NEW宏的效果。可以完成泄露点的输出。 在代码的最后,采用_CrtDumpMemo

Global site tag (gtag.js) - Google Analytics