zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Oracle死锁只会回滚跟死锁有关的那条SQL,而不会回滚整个事务
    Mysql安装过程(linux:2.6.18-194.el5,Mysql:)
    格式化分区,报/dev/sdb1 is apparently in use by the system; will not make a filesystem here!
    安装Oracle 11gR2,报错:[INS-06101] IP address of localhost could not be determined
    mysql-5.5.25-winx64在win7 x64 免安装配置
    insert遭遇阻塞
    linux中轻松使用backspace和上下按键
    排序
    MySQL
    基于Boost的同步TCP通信
  • 原文地址:https://www.cnblogs.com/yanghaitao/p/11528026.html
Copyright © 2011-2022 走看看