Memcached

---------------------------------Memcached----------------------------------------php

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

 

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

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

 

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

 

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

相关文章
相关标签/搜索