内容简介:add replace setdelete第二个参数代表延迟删除的时间。
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 一文读懂监督学习、无监督学习、半监督学习、强化学习这四种深度学习方式
- 学习:人工智能-机器学习-深度学习概念的区别
- 统计学习,机器学习与深度学习概念的关联与区别
- 混合学习环境下基于学习行为数据的学习预警系统设计与实现
- 学习如何学习
- 深度学习的学习历程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
High-Performance Compilers for Parallel Computing
Michael Wolfe / Addison-Wesley / 1995-6-16 / USD 117.40
By the author of the classic 1989 monograph, Optimizing Supercompilers for Supercomputers, this book covers the knowledge and skills necessary to build a competitive, advanced compiler for parallel or......一起来看看 《High-Performance Compilers for Parallel Computing》 这本书的介绍吧!
CSS 压缩/解压工具
在线压缩/解压 CSS 代码
随机密码生成器
多种字符组合密码