Memcached

---------------------------------Memcached----------------------------------------

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,

 

从而提高动态、数据库驱动网站的速度.

缓存一般用来保存一些常用存取的对象或数据,通过缓存来存取对象或数据要比磁盘存取快.把经常需要存取的对象或数据缓存在内存中,内存中缓存

 

的这些数据通过API的方式被存取.

 

Memcached 特征

1.协议简单

其使用基于文本行的协议,能直接通过telnet在Memcached服务器上存取数据.

 

2.基于libevent的事件处理

libevent利用C开发的程序库,它将BSD系统的kqueue,Linux系统的epoll等事件处理功能封装成为一个接口,确保即使服务器端的链接数增加也能发挥很好的性能.

Memcached利用这个库进行异步事件处理.

 

3.内置的内存管理方式

有一套自己管理内存的方式,这套方式非常高效,所有的数据都保存在Memcached内置的内存中,当存入的数据占满空间时,使用LRU算法自动删除不使用的缓存,即重用过期的内存间.

Memecached不考虑数据的容灾问题,一旦重启所有数据全部丢失.

 

4.互不通信的分布式

Memecached服务器之间互不通信,都是独立的存取数据,不共享任何信息。通过对客户端的设计,让Memcached具有分布式,能支持海量缓存和大规模应用.

 

Memcached 环境建立

1.yum install memcached -y [安装Memcached]

 

2.#systemctl start memcached[启动服务]

 #systemctl enable memcached

 

Memcached启动参数说明

-p:监听的TCP端口(默认:11211)

-U:监听的UDP端口(默认:11211,0表示不监听)

-s:用于监听的UNIX套接字路径(禁用网络支持)

-a:UNIX套接字访问掩码,八进制数字(默认:0700)

-l:监听的IP地址(默认:INADDR_ANY,所有地址)

-d:作为守护进程来运行

-r:最大核心文件限制

-u:设定进程所属用户(只有root用户可以使用这个参数)

-m:单个数据项的最大可用内存,以MB为单位.(默认:64MB )

-M:内存用光时报错.(不会删除数据)

-c:最大并发连接数.(默认:1024)

-v:提示信息(在事件循环中打印错误/警告信息)

-vv:详细信息(还打印客户端命令/响应)

-vvv:超详细信息(还打印内部状态的变化)

-k:锁定所有内存页。注意你可以锁定的内存上限.试图分配更多内存会失败的,所以留意启动守护进程时所用的用户可分配的内存上限.不是前面的

-u参数;在sh下,使用命令"ulimit -S -lNUM_KB"来设置)

-h:打印这个帮助信息并退出;

-i:打印memcached和libevent的许可;

-P:保存进程ID到指定文件,只有在使用 -d 选项的时候才有意义;

-f:块大小增长因子;(默认:1.25 )

-n :分配给key+value+flags的最小空间(默认:48)

-L:尝试使用大内存页(如果可用的话),提高内存页尺寸可以减少"页表缓冲(TLB)"丢失次数,提高运行效率; 为了从操作系统获得大内存页,memcached会把全部数据项分配到一个大区块;

-D:使用x作为前缀和ID的分隔符;这个用于按前缀获得状态报告。默认是":"(冒号);如果指定了这个参数,则状态收集会自动开启;如果没指定,则需要用命令"stats detail on"来开启.

-t:使用的线程数(默认:4 )

-R:每个连接可处理的最大请求数;

-C :禁用CAS

-b:设置后台日志队列的长度(默认:1024)

-B:绑定协议 - 可能值:ascii,binary,auto(默认)

-I:重写每个数据页尺寸;调整数据项最大尺寸;

 

4. 示例

//*启动memecached守护进程(-d),分配Memecached内存使用量为256M,以root身份运行(-u),监听端口为11211,接收最大并发连接数为1024个(-c),pid文件位置为/tmp目录下(-P)

#memcached -d -m 256 -u root -p 11211 -c 1024 -P /tmp/memcached.pid

 

5.查看Memcached状态

#telnet localhost 11211

Trying ::1...

Connected to localhost.

Escape character is '^]'.

stats ←输入命令

STAT pid 4354←memcache服务器的进程ID

STAT uptime 1629←服务器已经运行的秒数

STAT time 1477994282←服务器当前的unix时间戳

STAT version 1.4.15←memcache版本

STAT libevent 2.0.21-stable←libevent版本

STAT pointer_size 64←当前操作系统的指针大小(32位系统一般是32bit,64就是64位操作系统)

STAT rusage_user 0.059374←进程的累计用户时间

STAT rusage_system 0.075867←进程的累计系统时间

STAT curr_connections 10←服务器当前存储的items数量

STAT total_connections 11←从服务器启动以后存储的items总数量

STAT connection_structures 11←服务器分配的连接构造数

STAT reserved_fds 20

STAT cmd_get 0←get命令(获取)总请求次数

STAT cmd_set 0←get命令(保存)总请求次数

STAT cmd_flush 0←flush命令请求次数

STAT cmd_touch 0←touch命令请求次数

STAT get_hits 0←总命中次数

STAT get_misses 0←总未命中次数

STAT delete_misses 0←delete命令未命中次数

STAT delete_hits 0←delete命令命中次数

STAT incr_misses 0←incr命令未命中次数

STAT incr_hits 0←incr命令命中次数

STAT decr_misses 0←decr命令未命中次数

STAT decr_hits 0←decr命令命中次数

STAT cas_misses 0←cas命令未命中次数

STAT cas_hits 0←cas命令命中次数

STAT cas_badval 0←使用擦拭次数

STAT touch_hits 0←touch命令未命中次数

STAT touch_misses 0←touch命令命中次数

STAT auth_cmds 0←认证命令处理的次数

STAT auth_errors 0←认证失败数目

STAT bytes_read 13←总读取字节数(请求字节数)

STAT limit_maxbytes 10485760 ←分配给memcache的内存大小(字节)

STAT accepting_conns 1←服务器是否达到过最大连接( 0/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 malloc_fails 0

STAT bytes 0←当前存储占用的字节数

STAT curr_items 0←当前存储的数据总数

STAT total_items 0←启动以来存储的数据总数

STAT expired_unfetched 0

STAT evicted_unfetched 0

STAT evictions 0←为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)

STAT reclaimed 0←已过期的数据条目来存储新数据的数目

STAT crawler_reclaimed 0

STAT lrutail_reflocked 0

END

quit→退出

 

Memcached 的PHP 扩展

 

1.#yum install httpd php php-mbstring php-pear libmemcached -y[安装软件]

  #yum install php-pecl-memcache.x86_64[需要此软件包才会有memcached.ini文件]

2.确认memcached模块已被扩展

#vi /etc/php.d/memcached.ini

//*确认第2行

extension = memcached.so

 

3.编辑index.php

#cd /var/www/html

#vi index.php

<?php phpinfo() ?>

 

4.启动apache

#systemctl restart httpd

 

5.打开浏览器查看php信息,在页面中找”memcached”,如果存在则证明扩展成功

http://192.168.131.147

posted @ 2019-09-16 16:28  yanghaitao  阅读(288)  评论(0编辑  收藏  举报