memcached

Memcached 内存管理(一)

北战南征 提交于 2019-12-09 12:51:04
Memcached是一个高效的分布式内存cache,了解memcached的内存管理机制,便于我们理解memcached,让我们可以针对我们数据特点进行调优,让其更好的为我所用。这里简单谈一下我对memcached的内存管理的一些认识,在没有特别注明的情况下,这里谈到的memcached是1.2版本,1.1和1.2版本有一些差异。 基本概念:Slab和chunk 在Memcached内存结构中有两个非常重要的概念:slab 和 chunk,我们先从下图中对这两个概念有一个感性的认识: 图 1 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的时候可以通过-vv来查看slab的种类: 图2

memcached(windows)安装与配置

折月煮酒 提交于 2019-12-09 12:49:48
关键字:memcached(windows)安装与配置 1. 下载windows版本的Memcached:http://code.jellycan.com/memcached/ 2.解压之后放在硬盘的目录下,如:D:\memcached . 然后在运行中输入cmd进入命令行,进入到Memcached.exe 所在的目录,例如:D:\memcached,然后输入: Cmd代码 收藏代码 到memcached根目录 1、安装 memcached.exe –d install 2、启动 memcached.exe -d start 此时memcached已经注册为开机启动服务 完成安装。 经实验使用命令修改端口无效,相应的解决方案是修改注册表: 通过修改注册表来达到这个修改端口的目的。 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 下面找到一个 ImagePath 的字符串项,正好是服务的执行路径的字符串,双击该串,在后面加入 -l 192.168.1.135 -m 45 -p 12345 (访问ip为:192.168.1.135 使用45M内存,12345为端口),再启动服务。 现在来试试是否可以连接: 使用方法为“telnet ip 端口号”,登录后使用“stats”命令 cmd下

Memcached那些事

偶尔善良 提交于 2019-12-09 12:48:32
#Memcached那些事 本文不是为了介绍Memcached是什么,而是讨论在使用Memcached的时候你必须知道的一些事情。以便于方便排查和更好的使用Memcached。本文主要围绕两个方面来讨论这个话题:Memcached的使用和监控。 ##如何更好的使用Memcached 这部分讨论的是如何能够合理有效的让Memcached为我们服务,通过什么方式来调控Memcached,让它工作的更好。下面进入这部分的内容: ###Memcached如何存储我们的数据? 要很好的使用Memcached,那么必须知道我们的数据交给Memcached,它是怎么处理它们的。为了说明这个,需要先了解几个名词:slab class,page,chunk。它们三者之间的关系如下: slab class :memcached会自动根据设置的chunk size以及当前分配给memcached创建一系列slab class,单个slab class中的chunk大小是一样的,而每个slab class中的chunk大小根据设置设置的chunk_size*growth_factor^(i-1),其中i表示第几个slab class(这里需要注意这里的chunk_size不只是item的数据大小,还包含memcached内部的一个item结构体大小,这个值一般是48byte,默认的growth

Redis与Memcached的区别

三世轮回 提交于 2019-12-09 12:43:45
观点一: 1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 3、 虚拟内存 --Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘; 4、过期策略--memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10; 5、分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从; 6、存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化); 7、 灾难恢复 --memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复; 8、Redis支持数据的备份,即master-slave模式的数据备份; 观点二: Redis与Memcached的区别 如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点: 1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。 2 Redis支持数据的备份,即master

纯干货!-- Memcache详解

只愿长相守 提交于 2019-12-09 11:28:48
MemCache是什么 MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。MemCache设计理念就是小而强大,它简单的设计促进了快速部署、易于开发并解决面对大规模的数据缓存的许多难题,而所开放的API使得MemCache能用于Java、C/C++/C#、Perl、Python、PHP、Ruby等大部分流行的程序语言。 另外,说一下MemCache和MemCached的区别: 1、MemCache是项目的名称 2、MemCached是MemCache服务器端可以执行文件的名称 MemCache访问模型 为了加深理解,我模仿着原阿里技术专家李智慧老师《大型网站技术架构 核心原理与案例分析》一书MemCache部分,自己画了一张图: 特别澄清一个问题,MemCache虽然被称为"分布式缓存",但是MemCache本身完全不具备分布式的功能,MemCache集群之间不会相互通信(与之形成对比的,比如JBoss Cache,某台服务器有缓存数据更新时

蚂蚁技术专家:同为分布式缓存,为何 Redis 更胜一筹?

扶醉桌前 提交于 2019-12-09 11:26:50
如今,市面上的缓存解决方案已经逐步成熟了,今天我将选取其中一些代表性的方案包括Redis、Memcached和Tair进行对比,帮助大家 在生产实践中更好地进行技术选型。 一、常用的分布式缓存的对比 常用的分布式缓存包括Redis、Memcached和阿里巴巴的Tair(见下表),因为Redis提供的数据结构比较丰富且简单易用,所以Redis的使用广泛。 下面我们从9个大方面来对比最常用的Redis和Memcached。 1.数据类型 Redis一共支持5种数据类型,每种数据类型对应不同的数据结构,有简单的String类型、压缩串、字典、跳跃表等。 跳跃表是比较新型的数据结构,常用于高性能的查找,可以达到log2N的查询速度,而且跳跃表相对于红黑树,在更新时变更的节点较少,更易于实现并发操作。 Memcache只支持对键值对的存储,并不支持其它数据结构。 2.线程模型 Redis使用单线程实现,Memcache等使用多线程实现,因此我们不推荐在Redis中存储太大的内容,否则会阻塞其它请求。 因为缓存操作都是内存操作,只有很少的计算操作,所以在单线程下性能很好。Redis实现的单线程的非阻塞网络I/O模型,适合快速地操作逻辑,有复杂的长逻辑时会影响性能。 对于长逻辑应该配置多个实例来提高多核CPU的利用率,也就是说,可以使用单机器多端口来配置多个实例

Memcached启动-配置参数详解

倾然丶 夕夏残阳落幕 提交于 2019-12-09 10:43:47
memcached启动参数 [root@Betty ~] # memcached -h memcached 1.4.14 -p <num> TCP port number to listen on (default: 11211) -U <num> UDP port number to listen on (default: 11211, 0 is off) -s < file > UNIX socket path to listen on (disables network support) -a <mask> access mask for UNIX socket, in octal (default: 0700) -l <addr> interface to listen on (default: INADDR_ANY, all addresses) <addr> may be specified as host:port. If you don't specify a port number, the value you specified with -p or -U is used. You may specify multiple addresses separated by comma or by using -l multiple times -d run as a

linux memcached 安装

元气小坏坏 提交于 2019-12-09 10:43:33
1.下载包 1.1.到http://memcached.org/下载linux下的memcached的安装包. 1.2.到http://libevent.org/ 下载安装memcached前比需要的包libevent-2.0.22我安装的是这个版本. 2.安装libevent-2.0.22 [root@hnxz-vm-dg-s1 ~]# tar -zxvf libevent-2.0.22-stable.tar.gz [root@hnxz-vm-dg-s1 ~]# cd libevent-2.0.22-stable [root@hnxz-vm-dg-s1 libevent-2.0.22-stable]# pwd /root/libevent-2.0.22-stable [root@hnxz-vm-dg-s1 libevent-2.0.22-stable]# ./configure --prefix=/usr/local/libevent [root@hnxz-vm-dg-s1 libevent-2.0.22-stable]# make && make install 3.安装memcached [root@hnxz-vm-dg-s1 ~]# tar -zxvf memcached-1.4.25.tar.gz [root@hnxz-vm-dg-s1 ~]# cd memcached

memcached 启动参数 和 stat 参数详解

荒凉一梦 提交于 2019-12-09 10:43:21
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。 Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。 本质上,它是一个简洁的key-value存储系统。 我们这里用到的memcache 版本: 1.4.21 memcached 启动命令 语法: /usr/local/bin/memcached -u root -c 50000 -t 8 -m 256 -l 192.168.1.101 -p 11211 -d 参数详解: -p <num> 监听的TCP端口(默认: 11211) -U <num> 监听的UDP端口(默认: 11211, 0表示不监听) -s <file> 用于监听的UNIX套接字路径(禁用网络支持) -a <mask> UNIX套接字访问掩码,八进制数字(默认:0700) -l <ip_addr> 监听的IP地址。(默认:INADDR_ANY,所有地址) -d 作为守护进程来运行 -r 最大核心文件限制 -u <username> 设定进程所属用户。(只有root用户可以使用这个参数) -m <num> 所有slab class可用内存的上限,以MB为单位。(默认:64MB) (译者注:也就是分配给该memcached实例的内存大小。) -M 内存用光时报错。

spymemcached源码深入分析

对着背影说爱祢 提交于 2019-12-09 10:29:25
spymemcached 深入分析 author :智深 version : 0.7 日志: http://my.oschina.net/astute QQ : 2548921609 ( 技术交流 ) 一、简介 spymemcached 是一个 memcache 的客户端, 使用 NIO 实现 。 分析 spymemcached 需要了解 NIO , memcached 使用, memcached 协议,参考资料中列出了有用的资源连接。 NIO 是 New I/O 的缩写, Java 里边大家一般称为异步 IO ,实际上对应 Linux 系统编程中的事件驱动 IO ( event-driven IO ),是对 epoll 的封装。其它的 IO 模型还包括同步,阻塞,非阻塞,多路复用( select , poll )。阻塞 / 非阻塞是 fd 的属性,同步会跟阻塞配合,这样的应用会一直 sleep ,直到 IO 完成被内核唤醒;同步非阻塞的话,第一次读取时,如果没有数据,应用线程会立刻返回,但是应用需要确定以什么样的策略进行后面的系统调用,如果是简单的 while 循环会导致 CPU 100% ,复杂的类似自旋的策略增加了应用编程的难度,因此同步非阻塞很少使用。多路复用是 Linux 早期的一个进程监控多个 fd 的方式,性能比较低,每次调用涉及 3 次循环遍历,具体分析见 http