Linux学习|Gentoo/Arch/FreeBSDlinuxNoSQL

memcached文档

2017-03-20  本文已影响150人  6720d063c48d

memcached文档

memcached介绍

Memcached 是国外 社区 网站 LiveJournal 的开发团队开发的 高性能的分布式内

存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访

问次数,以提高动态 Web 应用的速度、提高可扩展性

基于 libevent 的事件处理

libevent 是一套跨平台的事件处理接口的封装,能够兼容包括这些操作系统:

Windows/Linux/BSD/Solaris 等操作系统的的事件处理。

包装的接口包括:

poll 、 select(Windows) 、 epoll(Linux) 、 kqueue(BSD) 、 /dev/pool(Solaris)

Memcached 使用 libevent 来进行网络并发连接的处理,能够保持在很大并发情

况下,仍旧能够保持快速的响应能力。

Memcached 的主要特点

自主的内存存储处理

数据存储方式: 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 字节就浪费了

数据过期方式

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

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

memcached语法

命令:
统计类:stats, stats items, stats slabs, stats sizes
存储类:set, add, replace, append, prepend
命令格式:<command name> <key> <flags> <exptime> <bytes>  <cas unique>
检索类:get, delete, incr/decr
清空:flush_all
            
示例:
telnet> add KEY <flags> <expiretime> <bytes> \r
telnet> VALUE


-p <num> 监听的 TCP 端口 ( ( 缺省 : 11211)
-d 以守护进程方式运行 Memcached
-u <username> 运行 Memcached 的账户,非 root 用户
-m <num> 最大的内存使用,  单位是 MB , 缺省是  64 MB
-c <num> 软连接数量,  缺省是  1024
-v 输出警告和错误信息
-vv 打印客户端的请求和返回信息
-h 打印帮助信息
-i 打印 memcached 和 libevent
-M:内存耗尽时,不执行LRU清理缓存,而是拒绝存入新的缓存项,直到有多余的空间可用时为止;
-f <factor>:增长因子;默认是1.25;
-t <threads>:启动的用于响应用户请求的线程数
-U <num>:Listen on UDP port <num>, the default is port 11211, 0 is off.


memcached默认没有认证机制,可借用于SASL进行认证;
SASL:Simple Authentication Secure Layer



启动
systemctl start memcached

连接
telnet localhost 11211

Memcached 一些特性和限制

上一篇下一篇

猜你喜欢

热点阅读