设为首页 收藏本站
查看: 988|回复: 0

[经验分享] memcached安装配置及保存php session于memcached中的方法

[复制链接]
发表于 2018-12-14 09:18:02 | 显示全部楼层 |阅读模式
  memcached:缓存服务器,但本身无法决定缓存任何数据
    一半依赖客户端,一半依赖于服务器
    set key 5 60 hello
    清理机制:lazy:惰性, LRU,最近最少使用
    内存缓存服务器
        最小48bytes
        最大1M
buddy system:伙伴系统
    避免内存外碎片,内存页面和页面之间的碎片
slab allocator:slab 分离器
    避免内存内碎片,专门事先为每一种数据结构把几个内存页面分成n个小的页面来存储小的数据。
memcached:不通信分布式缓存服务器
http://www.memcached.org/
event-libevent 提供事件驱动

  [root@localhost memcached-1.4.35]# yum -y install cyrus-sasl-devel
  [root@localhost ~]# tar -xf libevent-2.0.20-stable.tar.gz
  [root@localhost libevent-2.0.20-stable]# ./configure  --prefix=/usr/local/libevent
  [root@localhost libevent-2.0.20-stable]# make && make install
  

  [root@localhost ~]# tar -xf memcached-1.4.35.tar.gz
  [root@localhost memcached-1.4.35]# yum -y install cyrus-sasl-devel.i686
  [root@localhost memcached-1.4.35]#  ./configure --enable-sasl  --prefix=/usr/local/memcached  --with-libevent=/usr/local/libevent
  [root@localhost libevent-2.0.20-stable]# make && make install
  

  

  [root@localhost ~]# /usr/local/memcached/bin/memcached  -h
  memcached的常用选项说明
  -l :指定进程监听的地址;
  -d: 以服务模式运行;
  -u :以指定的用户身份运行memcached进程;
  -m :用于缓存数据的最大内存空间,单位为MB,默认为64MB;
  -c :最大支持的并发连接数,默认为1024;
  -p : 指定监听的TCP端口,默认为11211;
  -U :指定监听的UDP端口,默认为11211,0表示关闭UDP端口;
  -t :用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效;
  -f :设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子;
  -M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间;
  -n: 指定最小的slab chunk大小;单位是字节;设定最小的大小空间
  -S: 启用sasl进行用户认证;
  

  

  [root@localhost ~]# /usr/local/memcached/bin/memcached   -m 128 -n 20 -f 1.25 -vv -u nobody -d
  指定最大内存空间128M, 指定最小的slab chunk为20字节,指定增长因子为1.25  -d后台运行
  slab class   1: chunk size        72 perslab   14563
  第一次为72字节 一共有14563个
  

  [root@localhost ~]# netstat -tnulp |grep mem
  tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      1628/memcached
  tcp        0      0 :::11211                    :::*                        LISTEN      1628/memcached
  udp        0      0 0.0.0.0:11211               0.0.0.0:*                               1628/memcached
  udp        0      0 :::11211                    :::*                                    1628/memcached
  

  [root@localhost ~]# yum -y install telnet
  [root@localhost ~]# telnet localhost 11211
  36 END
  VALUE mykey 0 5
  hello
  END
  ---------------------
  

  get命令:
  get keyname
  如: get mykey
  VALUE mykey 0 12
  Hello world!
  END
  基本命令
get 读取一个键  get mykey
set 设定一个键  set mykey 0 60 5
add 创建一个键  add newkey 0 60 5
replace  替换一个现有键的值  replace key 0 60 5
append   在一个键后面新增一个值 append key 0 60 15
prepend  在已存在的键的前面新增一个值 prepend 0 60 15
incr     让某些值自动+1,相当于I++   incr mykey 2
decr     让某些值自动-1,相当于I--   decr mykey 5
delete   删除某个键                  delete mykey
flush_all  清除所有键                flush_all
                                      flush_all900
stats    显示状态,可以只显示某一个状态
    stats
    stats slabs
    stats malloc
    stats items
    stats detail
    stats sizes
    stats reset
version 显示版本
verbosity 提升日志级别
quit 退出

查看信息中的关键字中英文对照表
pid     memcache服务器的进程ID
uptime  服务器已经运行的秒数
time    服务器当前的unix时间戳
version       memcache版本
pointer_size  当前操作系统的指针大小(32位系统一般是32bit)
rusage_user   进程的累积用户时间
rusage_system 进程的累积系统时间
curr_items    服务器当前存储的item数量
total_items   从服务器启动以后存储的items总量
bytes         当前服务器存储items占用的字节数
curr_connections 当前打开着的连接数
total_connections 从服务器启动以后曾经打开过的连接数
cmd_get   get命令(获取)总请求次数
cmd_set   set命令(保存)总请求次数
get_hits  总命中次数
get_misses 总未命中次数
evictions 为获取空闲内存而删除的items数(分配给mamcache)的空间用满意后需要删除旧的items来得到空间分配给新的items
limit_maxbytes 分配给memcache的内存大小(字节)
threads当前线程数

  

  

  memcached SysV的startup脚本代码如下所示,将其建立为/etc/init.d/memcached文件:
  

  #!/bin/bash
  #
  # Init file for memcached
  #
  # chkconfig: - 86 14
  # description: Distributed memory caching daemon
  #
  # processname: memcached
  # config: /etc/sysconfig/memcached
  

  . /etc/rc.d/init.d/functions
  

  ## Default variables
  PORT="11211"
  USER="nobody"
  MAXCONN="1024"
  CACHESIZE="64"
  OPTIONS=""
  

  ##用于判断脚本的配置文件。
  [ -f /etc/sysconfig/memcached ] && . /etc/sysconfig/memcached
  

  RETVAL=0
  prog="/usr/local/memcached/bin/memcached"
  desc="Distributed memory caching"
  lockfile="/var/lock/subsys/memcached"
  

  start() {
  echo -n $"Starting $desc (memcached): "
  daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE $OPTIONS
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && touch $lockfile
  return $RETVAL
  }
  

  stop() {
  echo -n $"Shutting down $desc (memcached): "
  killproc $prog
  RETVAL=$?
  echo
  [ $RETVAL -eq 0 ] && rm -f $lockfile
  return $RETVAL
  }
  

  restart() {
  stop
  start
  }
  

  reload() {
  echo -n $"Reloading $desc ($prog): "
  killproc $prog -HUP
  RETVAL=$?
  echo
  return $RETVAL
  }
  

  case "$1" in
  start)
  start
  ;;
  stop)
  stop
  ;;
  restart)
  restart
  ;;
  condrestart)
  [ -e $lockfile ] && restart
  RETVAL=$?
  ;;
  reload)
  reload
  ;;
  status)
  status $prog
  RETVAL=$?
  ;;
  *)
  echo $"Usage: $0 {start|stop|restart|condrestart|status}"
  RETVAL=1
  esac
  

  exit $RETVAL
  ----------------------------------------
  [root@localhost ~]# chmod +x /etc/init.d/memcached
  [root@localhost ~]# chkconfig --add memcached
  [root@localhost ~]# chkconfig memcached on
  [root@localhost ~]#
  [root@localhost ~]# chkconfig list |grep mem
  [root@localhost ~]# chkconfig --list |grep mem
  memcached      0:off1:off2:on3:on4:on5:on6:off
  [root@localhost ~]# service memcached start
  Starting Distributed memory caching (memcached):           [  OK  ]
  /etc/init.d/memcached: line 84: exit: 0#!/bin/bash: numeric argument required
  [root@localhost ~]#
  给脚本提供配置文件
  [root@localhost sysconfig]# vim /etc/sysconfig/memcached
  PORT="11211"
  USER="nobody"
  MAXCONN="1024"
  CACHESIZE="180"
  OPTIONS=""
  ----------------
  [root@localhost sysconfig]# service memcached restart
  [root@localhost sysconfig]# telnet localhost 11211
  stats
  STAT limit_maxbytes 188743680
  -------------------------------------------
  安装Memcache的PHP扩展
  location / {
  root   /web/htdocs;
  index  index.php index.html;
  }
  

  nginx开启php功能
  location ~ \.php$ {
  root           /web/htdocs;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.php;
  fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
  include        fastcgi_params;
  }
  [root@localhost nginx]# service nginx reload
  [root@localhost nginx]# vim /web/htdocs/index.php
  Test Page
  
  

  

  ①安装PHP的memcache扩展
  

  # tar xf memcache-2.2.6.tgz
  # cd memcache-2.2.6
  [root@localhost memcache-2.2.6]# /usr/local/php/bin/phpize
  # ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
  # make && make install
  

  上述安装完后会有类似以下的提示:
  

  Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
  

  [root@localhost memcache-2.2.6]# mkdir /etc/php.d
  [root@localhost memcache-2.2.6]# vim /etc/php.d/memcache.ini
  extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/memcache.so
  

  对memcached功能进行测试,在网站目录中建立测试页面test.php,添加如下内容:

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-651167-1-1.html 上篇帖子: php判断远程资源是否存在 下篇帖子: 在Windows 64位下为PHP5.6.14安装memcache扩展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表