Memcached概述

说明:以往阅读源码,总是想把每个文件、每行代码搞清楚,甚至不放过宏定义。个人认为这是“捡了芝麻,丢了西瓜”。阅读源代码,学习其设计方法和思想,了解设计思路是主要的;而不是通过阅读源代码学习语言用法,能学习固然好,但是在精力有限时,要把精力主要放在阅读代码的初衷上。

在阅读源码之前,先对Memcached的工作流程做了解,这样阅读起来事半功倍。

Memcached使用Libevent,以此为基础来处理事件。其原理为:启动时的线程为main thread,它包含一个event_base,之后创建多个work thread;每个work thread中也有一个event_base。main thread中的event_base负责监听网络,接收新连接;当建立连接后就把新连接交给work thread来处理。

Memcached是基于key-value来存储数据的。数据全部放在内存,因此重启后数据会全部消失。基于key-value存储,用的是map;确切说是hashmap,以内存来换取高效率。

Memcached有自己的内存管理机制。内存分配方面,使用了SLAB机制,避免了频繁使用malloc/free带来的内存碎片问题。SLAB机制在Linux也有用到,其原理为:先分配一个大的内存块,之后把这个大内存块分成更小的内存单元;当需要使用内存时,就去对应的单元去取,使用完后归还(不是释放)。这样就可以避免动态开始和释放内存造成内存碎片问题。可以参考https://en.wikipedia.org/wiki/Slab_allocation。

在Memcached中的实现为:先分配大小为1M的slab,然后在把这个1M的slab分割为更小的chunk,大小相同的chunk的组成一个集合(slab),当需要分配内存时,向上取整(增加大小,找到合适大小的chunk)找到对应的chunk,从这个chunk取走内存,使用完后归还给这个chunk。

使用LRU机制,淘汰长期不用的Item。LRU全称为Least Recently Used(最近最少使用),意思为将最近最少使用的Item释放,用来加载其他Item。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-15 23:20:51

Memcached概述的相关文章

memcached 的简介、安装、命令

一.memcached 概述 Memcache(内存,缓存) : 是一个高性能的分布式的内存对象缓存系统.通过在内存里维护一个巨大的hash表.(key=value) Hash表 key(键) value(值) var1 "123456" var2 array('ab','cd') var3 object值 二.memcached 安装(windows) 1.下载 memcached 软件.   点击下载>> 2.将 memcached 软件拷贝到某个目录,最好放在 php

Memcached缓存系统介绍及安装

1.什么是Memcached 1.1.Memcached概述 Memcached是一个免费的开源的.高性能的.具有又分布式内存对象的缓存系统,它通过减轻数据库负载加速动态WEB应用, 1.2.Memcached和数据库交互流程 (1).检查客户端请求的数据是在Memcached中存在,如果存在,直接把请求的数据返回,不再对数据进行任何操作. (2).如果请求的数据不再Memcache中,就去查询数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到Memcahe中 (3).每次更新数据

Memcached(1)-----安装及基本介绍

memcached memcached概述 memcached是LiveJournal旗下Danga Interactive公司开发的一款软件.memcached是一个高性能,分布式内存对象缓存系统,具备通用性, 目的是用于为动态web程序加速,并减轻数据库的的负担. mem->memory内存 + cached->缓存 = memcached memcached安装详解 1.安装libevent 进入libevent官网 http://libevent.org/ 现在的libevent最新的

Memcached高性能内存对象缓存系统

一.Memcached概述 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 传统数据都保存在关系型数据库管理系统中(RDBMS关系型数据库管理系统),客户端请求时会从RDBMS中读取数据并在浏

Memcached安装部署for Centos6

本文源链接地址:https:www.93bok.com 实验环境: Centos6.5minimal 64位系统 服务器IP:192.168.10.22 说明: 1. 安装包已经提前下载好,此文章中不再演示下载步骤 2. 根据笔者习惯,所有的源码包都在/a01/apps/apps_src/ 3. 所有的服务安装路径都在/a01/apps/xxxxxxx 4. LNMP源码编译环境自己参考之前文章即可,本文不再演示 5. 注意开启防火墙11211端口,本文不再演示 包版本: Memcached:

Memcached数据库群集

Memcached概述 一套开源的高性能分布式内存对象缓存系统所有的数据都存储在内存中支持任意存储类型的数据提高网址访问的速度 Memcached缓存机制 当程序写入缓存数据请求时,Memcached的API接口将KEY输入路由算法模块路由到集群中的一台服务,之后由API接口与服务器进行通信,完成一次分布式缓存写入 Key索引建立在API中,值value数据存在后面的memcached中 Memcached分布式 要依赖于Memcached的客户端来实现多个Memcached服务器是独立的分布式

Memcached内存数据库群集

Memcached概述 一套开源的高性能分布式内存对象缓存系统所有的数据都存储在内存中支持任意存储类型的数据提高网址访问的速度 Memcached缓存机制 当程序写入缓存数据请求时,Memcached的API接口将KEY输入路由算法模块路由到集群中的一台服务,之后由API接口与服务器进行通信,完成一次分布式缓存写入 Key索引建立在API中,值value数据存在后面的memcached中 Memcached分布式 要依赖于Memcached的客户端来实现多个Memcached服务器是独立的分布式

Memcached原理与部署

Memcached概述 一套开源的高性能分布式内存对象缓存系统所有的数据都存储在内存中支持任意存储类型的数据提高网站的访问速度 Memcached路由算法 ●求余数hash算法先用key做hash运算得到一个整数,再去做hash算法,根据余数进行路由,这种算法适合大多数据需求,但是不适合用在动态变化的环境中●一致性hash算法按照hash算法把对应的key通过一定的hash算法处理后映射形成一一个首尾相接闭合循环,然后通过使用与对象存储一样的hash算法将机器也映射到环中,顺时针方向计算将所有对

MemCached配置与缓存知识概述

先看看百度百科里面对缓存的介绍: 缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器.由于硬盘的内部数据传输速度和外界介面传输速度不同,缓存在其中起到一个缓冲的作用.缓存的大小与速度是直接关系到硬盘的传输速度的重要因素,能够大幅度地提高硬盘整体性能.当硬盘存取零碎数据时需要不断地在硬盘与内存之间交换数据,有大缓存,则可以将那些零碎数据暂存在缓存中,减小系统的负荷,也提高了数据的传输速度. 这个是介绍了电脑的硬盘缓存..当然,电