Memcached的一些知识

一、内存分配
在Memcached内存结构中有两个非常重要的概念:slab 和 chunk,我们先从下图中对这两个概念有一个感性的认识:

            memcached内存结构
Slab是一个内存块,它是memcached一次申请内存的最小单位。在启动memcached的时候一般会使用参数-m指定其可用内存,但是并不是在启动的那一刻所有的内存就全部分配出去了,只有在需要的时候才会去申请,而且每次申请一定是一个slab。Slab的大小固定为1M(1048576 Byte),一个slab由若干个大小相等的chunk组成。每个chunk中都保存了一个item结构体、一对key和value。
虽然在同一个slab中chunk的大小相等的,但是在不同的slab中chunk的大小并不一定相等,在memcached中按照chunk的大小不同,可以把slab分为很多种类(class)。
二、Memcached的缓存策略
当ms的hash表满了之后,新的插入数据会替代老的数据,更新的策略是LRU(最近最少使用),以及每个kv对的有效时限。Kv对存储有效时限是在mc端由app设置并作为参数传给ms的。
同时ms采用是偷懒替代法,ms不会开额外的进程来实时监测过时的kv对并删除,而是当且仅当,新来一个插入的数据,而此时又没有多余的空间放了,才会进行清除动作。
三、Memcached的客户端
Memcached客户端有各种语言的版本供大家使用,包括java,c,php,.net等等。其中面向Java的三种Memcached客户端包括memcached client for java、spymemcached和xmemcached。
四、最大缓存时间
看到的一行代码里,Memcached的缓存时间被设置为86400*24*4, 等于是96天。而当调用set去存储的时候,memcached会返回true。而当你用get的时候,就是相反的结果了:FALSE。
这是以为Memcached的最大缓存时间是30天

时间: 2024-12-27 07:39:06

Memcached的一些知识的相关文章

Memcached全面剖析

一.Memcached的简介 1.memcached是什么 memcached是高性能的分布式内存缓存服务器.一般使用使用目的是,通过缓存数据查询结果,来减少数据库访问次数,以提高动态Web应用的速度,提高可扩展性! 2.memcached的特征 (1)协议简单 (2)基于libevent的事件处理 (3)内置内存存储方式 (4)memcached不互相通信的分布式 3.memcached的安装.启动 (1)安装 $ wget http://www.danga.com/memcached/dis

memcached全面剖析–3. memcached的删除机制和发展方向

memcached在数据删除方面有效利用资源 数据不会真正从memcached中消失 上次介绍过, memcached不会释放已分配的内存.记录超时后,客户端就无法再看见该记录(invisible,透明), 其存储空间即可重复使用. Lazy Expiration memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期. 这种技术被称为lazy(惰性)expiration.因此,memcached不会在过期监视上耗费CPU时间. LRU:从缓存中有效删除数据

搭建一个三台服务器的Memcached集群

关于memcached的基础知识可以查看博客其他博文,这里只记录了搭建的过程,谢谢! 1.分别在三台服务器上安装Memcached并启动 第一.由于memcached是基于libevent的事件处理,所以需要安装libevent yum install libevent libevent-devel 第二.上传Memcached到三台服务器(192.168.176.129/192.168.176.130/192.168.176.131)解压并安装 tar -zxvf memcached-1.2.

memcached完全剖析系列教程《转》memcached完全剖析系列教程–3.memcached的删除机制和发展方向

本文目录 memcached在数据删除方面有效利用资源 · 数据不会真正从memcached中消失 · Lazy Expiration · LRU:从缓存中有效删除数据的原理 memcached的最新发展方向 · 关于二进制协议 · 二进制协议的格式 · HEADER中引人注目的地方 外部引擎支持 · 外部引擎支持的必要性 · 简单API设计的成功的关键 · 重新审视现在的体系 · 总结 memcached是缓存,所以数据不会永久保存在服务器上,这是向系统中引入memcached的前提.本次介绍

合格PHP工程师的知识结构 (转载)

工作有些年头了,从学校开始自学ASP,偶然因为PHP一个功能爱上它(ASP上传代码要写好多,PHP基本几行就搞定了),从此走上了 "拍黄片" 之路.结合这几年的工作经验,说说我对PHP工程师知识结构的理解 PHP的运行环境 连环境都搞不起来,就是你有多么喜欢PHP,那也是白搭,开始我们大多会使用集成环境软件例如xampp,wamp.随着知识的增加慢慢要学会自己搭建运行环境,例如 Linux(Ubuntu/Centos),Apache/Nginx,Mysql,Redis/Memcache

memcached Java调用,注意点和基础知识

1. Memcached Client简要介绍  Memcached Client目前有3种: Memcached Client for Java SpyMemcached XMemcached 前两种的下载地址http://pan.baidu.com/s/1dEMWfuD 这三种Client一般的认知是: Memcached Client for Java 比 SpyMemcached更稳定.更早.更广泛: SpyMemcached 比 Memcached Client for Java更高效

【 学习笔记 】memcached基础知识

源地址:http://kb.cnblogs.com/page/42731/ 仔细学习了下,以下是记录的笔记备忘内容. 一.memcached是什么?    memcached是高性能的分布式内存缓存服务器.    一般使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态web应用的速度.提高可扩展性 memcached的特征:        1. 协议简单        2. 基于libevent的事件处理        3. 内置内存存储方式        4. memcache

Memcached基础知识

Memcached的安装 1)下载源码 wget -c http://memcached.org/files/memcached-1.4.24.tar.gz tar -zxvf memcached-1.4.24.tar.gz 2)./configure 3) make && make install

memcached 系列知识 1

menmcache [1]memcache软件客户端软件安装的是memcache 服务端软件安装的是memcached [2]memcached的作用:在传统场景中  多数的web服务器都会将数据保存到 关系型数据库中,但随着数据量增大,访问的集中,关系型数据库的负担加重 响应缓慢,导致网站打开延迟等问题 memcache的主要目的就是作为数据库的 缓存,通过在自身内存中缓存关系型数据库的调查结果,减少数据库自身被访问的次数 ,以提高动态web应用的速度,提高网站架构的并发能力和可扩展性 [3]