`

Memcached介绍

阅读更多

Memcached的主要特点

  • 基于C/S架构,协议简单
  • 基于libevent的事件处理
  • 自主内存存储处理
  • 基于客户端的Memcached分布式

1.数据存储方式:Slab Allocation

             

             Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题。
             Slab Allocation的原理相当简单。 将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk的集合)

             Page:分配给Slab的内存空间,默认是1MB。分配给Slab之后根据slab的大小切分成chunk。

             Chunk:用于缓存记录的内存空间。
             Slab Class:特定大小的chunk的组。
             memcached根据收到的数据的大小,选择最适合数据大小的slab。memcached中保存着slab内空闲chunk的列表,根据该列表选择chunk,然后将数据缓存于其中

           

              Slab Alloction 缺点:这个问题就是,由于分配的是特定长度的内存,因此无法有效利用分配的内存。例如,将100字节的数据缓存到128字节的chunk中,剩余的28字节就浪费了。

2.数据过期方式:Lazy Expiration + LRU

        Lazy Expiration:memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。

        LRU:memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当memcached的内存空间不足时(无法从slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。

 

 

Memcached一些特性和限制

  • 在 Memcached 中可以保存的item数据量是没有限制的,只有内存足够
  • Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程
  • 最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA
  • 60*60*24*30 控制
  • 最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制
  • 单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进行控制,
  • 它是默认的slab大小
  •  最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过
  • settings.maxconns=1024 进行控制
  •  跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式

 

 

分享到:
评论

相关推荐

    Memcached 介绍文档

    详细介绍了Memcached的使用,原理及出处

    Memcached 原理和使用详解

    详细介绍了分布式缓存系统memcached的原理和详细使用方法。主要包括1、Memcached介绍;2、Memcached安装3、使用一些技巧等内容

    MemCached Cache Java Client封装优化历程

    Memcached 介绍 Memcached是一种集中式Cache,支持分布式横向扩展。这里需要有点说明,很多开发者觉得Memcached是一种分布式Cache,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的...

    memcached权威指南

    第一章:memcached 介绍....................................................................................................................1 1.1 memcached 是什么?...........................................

    memcached高性能内存k-v缓存服务器

    memcached介绍 memcached安装 memcached操作 内存存储机制 数据过期与删除机制 php操作memcached 多服务器集群算法 缓存无底洞效应 缓存雪崩 老数据被踢现象 结课作业

    Memcached原理和使用详解

    Memcached介绍 Memcached安装和使用 一些技巧 C++\PH一些例子

    Memcached安装和配置

    详细介绍安装Memcached及Memcached配置

    memcached1

    先简单的介绍下什么是memcached。 Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每...

    PHP内存缓存技术memcached 的安装和工作原理介绍

    PHP内存缓存技术memcached 的安装和工作原理介绍

    memcached软件windows版本,具体看介绍

    将这个压缩包解压,就出来一个“鹿头”的memcached.exe文件,没错!就是它了。运行它,会出现一个窗口,这个窗口一直打开着就说明memcached的服务端就一直运行着,那么它就能接收客户端的请求

    memcached的介绍和使用.docx

    memcached的介绍和使用.docx

    Memcache入门到精通[张振华.Jack]

    Memcached介绍、应用场景、运行机制 Memcached安装 Memcached启动,参数 Memcached连接、监控 Memcached客户端命令 Memcached的Java客户端实例 Memcached的客户端分布式原理 Memcached的服务器端运行原理 Memcached...

    memcached管理session资源

    MSM--Memcached_Session_Manager介绍及使用,所使用的jar包以及tomcat中的context.xml的配置

    memcached144And145

    因此我们以下介绍两个不同版本 1.4.4 及 1.4.5的不同安装方法: memcached 版本安装 1、解压下载的安装包到指定目录。 2、在 1.4.5 版本以前 memcached 可以作为一个服务安装,使用管理员权限运行以下命令: c:\...

    memcached_exporter-0.6.0.linux-amd64.tar.gz

    在使用 Memcached 过程中需要对 Memcached 运行状态进行监控,以便了解 Memcached 服务是否运行正常,排查 Memcached 故障等。 Prometheus 监控服务提供基于 ...本文为您介绍如何使用 Prometheus 监控服务 Memcached。

    Linux下安装memcached详细步骤

    介绍Linux下memcached详细安装步骤,自己的实际安装经验。

    Java环境下Memcached应用详解.docx

    这里将介绍Java环境下Memcached应用,Memcached主要是集群环境下的缓存解决方案,希望本文对大家有所帮助。 本文将对在Java环境下Memcached应用进行详细介绍。Memcached主要是集群环境下的缓存解决方案,可以运行在...

    memcached部署

    memcached部署,详细介绍了memcached缓存的使用,为以后的云负载均衡做一个基础。

    tomcat8+memcached共享session(套装)

    悉心整理,亲测。请放心使用。 tomcat8+memcached共享session(套装) memcached较全面介绍.docx Nginx+Tomcat+Memcached部署.docx

Global site tag (gtag.js) - Google Analytics