【图文教程】Memcached
Memcached
- 1. Memcached简介
- 2. Mencached安装
- 3. 查看Memcached运行状态
- 4. Mencached命令行
- 5. Memcached数据导出和导入
- 6. php连接Memcached
- 7. Memcached中存储sessions
1. Memcached简介
Memcached是国外社区网站LiveJournal团队开发,目的是为了通过缓存数据库查询结果,减少数据库访问次数,从而提高动态web站点性能。
官方站点:http://www.memcached.org/
数据结构简单(k-v key/value),数据存放在内存里
多线程
基于c/s架构,协议简单
基于libevent的事件处理
自主内存存储处理(slab allowcation)
数据过期方式:Lazy Expiration 和 LRU
- Mencache数据流向

- Slab allocation (板配置)
# Slab Allocation的原理# 将分配的内存分割成各种尺寸的块(chunk), 并把尺寸相同的块分成组(chunk的集合),每个chunk集合被称为slab。# Memcached的内存分配以Page为单位,Page默认值为1M,可以在启动时通过-I参数来指定。# Slab是由多个Page组成的,Page按照指定大小切割成多个chunk。# Slab:板# Page:页面# chunk:块

- Growth factor (增长因子)
# Memcached在启动时通过-f选项可以指定 Growth Factor因子。该值控制chunk大小的差异。默认值为1.25。# 通过memcached-tool命令查看指定Memcached实例的不同slab状态,可以看到各Item所占大小(chunk大小)差距为1.25# 命令:# memcached-tool 127.0.0.1:11211 display
- Memcached的数据过期方式
# Lazy ExpirationMemcached 内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,Memcached不会在过期监视上耗费CPU时间。# LRUMemcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当内存空间不足时(无法从slab class获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。
2. Mencached安装
- Memcached安装步骤
# yum list |grep memcached //查看memcached安装包# yum install -y memcached libmemcached libevent //安装memcached# systemctl start memcached //启动memcached- 更改memcached参数启动方案(两种)# /usr/bin/memcached -u memcached -p 11211 -m 64 -c 1024 //更改数字,然后启动memcached服务# vim /etc/sysconfig/memcached //更改配置文件PORT="11211" //端口号
USER="memcached" //用户
MAXCONN="1024" //最大连接数
CACHESIZE="64" //大小
OPTIONS=" " //选项
- Memcached参数
. /memcached -d -m 10 -u root -l 192. 168. 1. 130 -p 2222 -c 256 -P /tmp/memcached. pi d
| 参数 | 含义 |
|---|---|
| -d | 作为守护进程来运行 |
| -m | 分配给Memcached的内存 |
| -u | 运行Memcached的用户 |
| -l | Memcached监听的IP地址 |
| -p | Memcached监听的端口 |
| -c | 最大的并发连接数 默认为1024 |
| -P | 保存进程Id到指定的文件,只有在d使用的时候才有意义 |
3. 查看Memcached运行状态
- 运行Memcached
# yum install telnet# telnet 127.0.0.1 11211
- 查看Memcached状态
第一种方法:# memcached-tool 127.0.0.1:11211 stats //查看memcached状态#127.0.0.1:11211 Field Valueaccepting_conns 1auth_cmds 0auth_errors 0bytes 0bytes_read 104bytes_written 122cas_badval 0cas_hits 0cas_misses 0cmd_flush 0cmd_get 0cmd_set 0cmd_touch 0conn_yields 0connection_structures 11curr_connections 10curr_items 0 //暂时存在里面有多少个项目decr_hits 0decr_misses 0delete_hits 0delete_misses 0evicted_unfetched 0evictions 0expired_unfetched 0get_hits 0 //命中了多少 用 get_hits ÷ curr_items = 命中率有多高get_misses 0 hash_bytes 524288hash_is_expanding 0hash_power_level 16incr_hits 0incr_misses 0libevent 2.0.21-stablelimit_maxbytes 134217728listen_disabled_num 0pid 11350pointer_size 64reclaimed 0reserved_fds 20rusage_system 0.014572rusage_user 0.012424threads 4time 1575897687total_connections 14total_items 0touch_hits 0touch_misses 0uptime 686version 1.4.15第二种方法:# yum install -y nc //需要安装nc命令# echo stats |nc 127.0.0.1 11211 //查看memcached状态STAT pid 11350
STAT uptime 1363
STAT time 1575898364
STAT version 1.4.15
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 0.025597
STAT rusage_system 0.024586
STAT curr_connections 10
STAT total_connections 16
STAT connection_structures 11
STAT reserved_fds 20
STAT cmd_get 0
STAT cmd_set 0
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 0
STAT get_misses 0
STAT delete_misses 0
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 116
STAT bytes_written 1152
STAT limit_maxbytes 134217728
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT bytes 0
STAT curr_items 0
STAT total_items 0
STAT expired_unfetched 0
STAT evicted_
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
