memcached 学习
memcached
是什么
特点
协议简单
基于 libevent 的事件处理
内置内存存储方式
memcached 不互相通信的分布式
启动
安装
依赖
- libevent
- 安装命令 下载地址在这个网址上面找: https://memcached.org/downloads
$ wget 下载地址
$ tar zxf memcached-版本号.tar.gz
$ cd memcached-版本号.tar.gz
$ ./configure
$ make
$ sudo make install
启动
启动命令 $ /usr/local/bin/memcached -p 11211 m 64m -d
-d 后台运行 -m 运行的最大内存大小 -p 使用 tcp 端口默认为11211 -vv very verbose
基本命令
保存命令
add replace set
add
replace
set
获取数据
get
get_multi 获取多个数据
删除数据
delete
第二个参数代表延迟删除的时间。
删除第一个参数指定的键的数据。第二个参数指定一个时间值,可以禁止使用同样的键保存新数据。
set 函数会忽视这个时间
增一&减一
原子操作
不会自动赋值
不会对
内部结构
内存分配机制
Slab Allocator
分配的内存不会释放
术语
page 分配给 Slab 的内存空间,默认是 1MB。 分配给 Slab 之后根据 slab 的大小切分成 chunk。
chunk 用于缓存记录的内存空间。
slab class 特定大小的 chunk 的组。
memcached 如何选择 slab memcached 根据收到的数据的大小,选择最适合数据大小的 slab(图 2.2)。
memcached 中保存着 slab 内空闲 chunk 的列表,根据该列表选择 chunk,然后将数据缓存于其中。
减少内存碎片
缺点
- 无法有效利用分配的内存 例如,将 100 字节 的数据缓存到 128 字节的 chunk 中,剩余的 28 字节就浪费了。
Growth Factor
控制 slab 之间的差异,默认值为1.25 即 slab2 是 slab1 的 chunk 大小的 1.25 倍
在之前 slab 的默认值是2
监控命令
连接
telnet 主机名 端口号
memcached-tool 使用
memcached-tool 10.0.0.5:11211 display # shows slabs
memcached-tool 10.0.0.5:11211 # same. (default is display) memcached-tool 10.0.0.5:11211 stats # shows general stats memcached-tool 10.0.0.5:11211 settings # shows settings stats memcached-tool 10.0.0.5:11211 sizes # shows sizes stats memcached-tool 10.0.0.5:11211 dump [limit] # dumps keys and values
- 脚本如何获得 memcached 软件包的 scripts 目录中有一些工具,memcached-tool 也在其中 memcached-1.5.10/scripts
可视化监控后台
pecl 的 memcached.php
memAdmin 后台 https://github.com/junstor/memadmin
删除机制
不过渡清除
不会释放已分配的内存
lazy expiration memcached 内部不会监视记录是否过期,而是在 get 时查看记录的时间戳,检查记录是否过期。
memcached 不会在过期监视上耗费 CPU 时间。
空间不足
- LRU 指定“M”参数启动后,内存用尽时 memcached 会返回错误。话说回来,memcached 毕竟不是存储 器,而是缓存,所以推荐使用 LRU。
分布式
memcached 的分布式完全依赖客户端的实现
余数分散
一致性 hash
Consistent Hashing 如下所示:
首先求出 memcached 服务器(节点)的哈希值,并将其配置到 0~2 32 的圆(continuum)上。然后用同样的方法求出存储数据的键的哈希值,并映射到圆上。然后从数 据映射到的位置开始顺时针查找,将数据保存到找到的第一个服务器上。如果超过 2 32 仍然找不到 服务器,就会保存到第一台 memcached 服务器上。
php 库: libketama

memcached 学习的更多相关文章
- memcached 学习 1—— memcached+spring配置
memcached 学习目录: memcached 学习 1—— memcached+spring配置 这几天自己搭建项目环境,解决问题如下: 有关常见的配置这里没有列出,中间遇到的搭建问题比较顺利g ...
- memcached学习笔记——存储命令源码分析下篇
上一篇回顾:<memcached学习笔记——存储命令源码分析上篇>通过分析memcached的存储命令源码的过程,了解了memcached如何解析文本命令和mencached的内存管理机制 ...
- memcached学习笔记——存储命令源码分析上篇
原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command ...
- Memcached 学习笔记(二)——ruby调用
Memcached 学习笔记(二)——ruby调用 上一节我们讲述了怎样安装memcached及memcached常用命令.这一节我们将通过ruby来调用memcached相关操作. 第一步,安装ru ...
- Memcached学习笔记
[TOC] 前言 此为学习笔记汇总,如有纰漏之处,还望不吝指出,谢谢. 启动流程 调用settings_init()设定初始化参数 从启动命令中读取参数来设置setting值 设定LIMIT参数 开始 ...
- 分布式缓存技术memcached学习(二)——memcached基础命令
上文<linux环境下编译memcahed>介绍了memcahed在linux环境下的安装以及登录,下面介绍memcahed的基本命令的使用. Add 功能:往内存增加一条新的缓存记录 语 ...
- 应用程序Cache对象到高性能Memcached学习之路
来源:微信公众号CodeL 以下是个人学习之路的简单分享,不足之处欢迎大神们批评指正! 在网站开发的初期,我们没有考虑更多的东西,也没有对缓存进行系统的设计,而是直接使用了应用程序缓存对象Cache, ...
- memcached学习笔记2--安装及命令
学习memcached的原理: 用户一 -> 访问浏览器 -> 服务器Apache -> PHP文件(该文件应用了memcached技术) -> [第一次]到数据库DB中查找数 ...
- 分布式缓存技术memcached学习系列(二)——memcached基础命令
上文<linux环境下编译memcahed>介绍了memcahed在linux环境下的安装以及登录,下面介绍memcahed的基本命令的使用. Add 功能:往内存增加一条新的缓存记录 语 ...
- 分布式缓存技术memcached学习(五)—— memcached java客户端的使用
Memcached的客户端简介 我们已经知道,memcached是一套分布式的缓存系统,memcached的服务端只是缓存数据的地方,并不能实现分布式,而memcached的客户端才是实现分布式的地方 ...
随机推荐
- Python第二十六天 python装饰器
Python第二十六天 python装饰器 装饰器Python 2.4 开始提供了装饰器( decorator ),装饰器作为修改函数的一种便捷方式,为工程师编写程序提供了便利性和灵活性装饰器本质上就 ...
- SQL Server函数与存储过程 计算时间
一.通过一个开始时间.结束时间计算出一个工作日天数(不包含工作日与节假日): 1.函数 --创建函数,参数 @bengrq 开始时间,@endrq 结束时间 create function [dbo] ...
- mybatis的时间比较 xml 及不解析<=的写法
<if test="type ==1"> and DATE_FORMAT(create_date,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y ...
- #ifndef, #define, #endif 作用
#ifndef, #define, #endif 作用 https://www.cnblogs.com/challenger-vip/p/3386819.html
- 说一下Dubbo 的工作原理?注册中心挂了可以继续通信吗?
面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ.ES.Redis.Dubbo,上来先问你一些思考性的问题.原理,比如 kaf ...
- [Swift]浙大美女学霸征婚问题
问题1:求乘积为(7140229933)的两个质数? Solution: import Foundation class Solution { func findBeauty(_ number:Int ...
- Java Spring MVC框架搭建(一)
环境准备 >>>>>>java JDK和tomcat,eclipse 1.创建项目 2.项目名称自定义,这边为demo 3.我们已经创建完一个动态网站的项目,还得下 ...
- ProgressWheelDialogUtil【ProgressWheel Material样式进度条对话框】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 简单封装网络请求时的加载对话框以及上传.下载文件的进度加载对话框. 效果图 代码分析 ProgressWheel : 自定义view ...
- ES 07 - Elasticsearch查询文档的六种方法
目录 1 Query String Search(查询串检索) 2 Query DSL(ES特定语法检索) 3 Query Filter(过滤检索) 4 Full Text Search(全文检索) ...
- 认识JWT
1. JSON Web Token是什么 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的.自包含的方式,用于作为JSON对象在各方之间安全地传输信息.该 ...