Memcached的安装和使用
2016-01-07 10:35
821 查看
一、简介
Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。
二、下载相关包
三、编译安装memcached
①编译libevent
②编译memcached
四、配置启用memcached
①配置memcached脚本启动
②直接使用命令启动
memcached常用选项说明:
-d:启动一个守护进程
-m:用于缓存数据的最大内存空间(单位MB,默认64M)
-u:指定运行memcached的用户
-l:指定进程监听的IP地址(默认监听所有网卡)
-p:设置memcached的TCP监听端口(默认11211)
-U:指定监听的UDP端口(默认为11211,0表示关闭UDP端口)
-c:最大支持的并发连接数(默认1024)
-P:设置保存memcached的Pid文件
-t:用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效
-f:设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子
-M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间
-n:指定最小的slab chunk大小(单位是字节)
-S:启用sasl进行用户认证
③测试
④memcached命令
set:向缓存添加新的键值对.如果键已经存在,则之前的值将被替换
add:仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。
如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应NOT_STORED
replace:仅当键已经存在时,replace 命令才会替换缓存中的键。
如果缓存中不存在键,那么您将从memcached服务器接受到一条NOT_STORED响应
get:用于检索与之前添加的键值对相关的值
delete:用于删除memcached中的任何现有值。您将使用一个键调用delete ,如果该键存在于缓存中,则删除该值.如果不存在,则返回一条NOT_FOUND消息
gets:功能类似于基本的get命令。两个命令之间的差异在于,gets返回的信息稍微多一些:64 位的整型值非常像名称/值对的 “版本” 标识符
语法如下:
command <key> <flags> <expiration time> <bytes> <value>
参数 用法
key key用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节点
value 存储的值(始终位于第二行)
缓存管理命令
stats:转储所连接的memcached实例的当前统计数据
flush_all:清理缓存中的所有名称/值对
五、安装memcached的PHP扩展
①下载相应程序
②安装
a.编译PHP
b.编译memcache
c.配置PHP以支持扩展模块
编辑/usr/local/php/etc/php.ini,在“动态模块”相关的位置添加如下:
d.编译nginx
f.配置nginx启用PHP
③测试memcached
a.新建测试页
b.启用相关程序并查看
![](http://s4.51cto.com/wyfs02/M00/77/71/wKiom1Zn3PmByu0kAABOzfHQm90598.png)
六、配置PHP使用memcached
①配置php.ini
②新建PHP页面,为客户端设置启用session
③新建PHP页面以获取当前用户会话ID
④测试
a.输入http://localhost/set.php查看
![](http://s1.51cto.com/wyfs02/M01/77/73/wKiom1Zn7FPBhCcAAABRaRLDQfk565.png)
b.输入http://localhost/get.php查看
![](http://s4.51cto.com/wyfs02/M01/77/72/wKioL1Zn7O6S1gWPAABMF4NuLio960.png)
七、使用memadmin管理memcached
①简介
MemAdmin是一款可视化的Memcached管理与监控工具,使用PHP开发,体积小,操作简单。
主要功能:
a.服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新
b.服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控
c.支持数据遍历,方便对存储内容进行监视
d.支持条件查询,筛选出满足条件的KEY或VALUE
e.数组、JSON等序列化字符反序列显示
f.兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外)
g.支持服务器连接池,多服务器管理切换方便简洁
②下载安装
③使用
浏览器输入http://localhost/memadmin【用户名密码均为admin】
![](http://s2.51cto.com/wyfs02/M01/77/73/wKiom1Zn8UySMPM0AAB0eOsoqxo698.png)
![](http://s1.51cto.com/wyfs02/M02/77/73/wKiom1Zn8dmgdoWVAAEZjIoGJBI523.png)
本文出自 “记事本” 博客,请务必保留此出处/article/7194556.html
Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。
二、下载相关包
12 | # wget http://nchc.dl.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz ##网络库,memcached所依赖的异步事件通知库# wget http://memcached.org/files/memcached-1.4.25.tar.gz |
三、编译安装memcached
①编译libevent
1234 | # tar -zxvf libevent-2.0.22-stable.tar.gz # cd libevent-2.0.22-stable# ./configure --prefix=/usr/local/libevent# make & make install |
1234 | # tar -zxvf memcached-1.4.25.tar.gz# cd memcached-1.4.25# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent# make & make install |
①配置memcached脚本启动
1234567 | # cp memcached-1.4.25/scripts/memcached.sysv /etc/init.d/memcached# vi /etc/init.d/memcachedprog="/usr/local/memcached/bin/memcached" ##更改该处的memcached路径daemon $prog -d -p $PORT -u $USER -m $CACHESIZE -c $MAXCONN -P /var/run/memcached/memcached.pid $OPTIONS ##将memcached改为$prog,也可改为具体路径# systemctl daemon-reload ##重启所有守护进程# systemctl start memcached# ss -tlnp |
123 | # /usr/local/bin/memcached -d -m 128 -u root -p 11211 -c 256 -P /var/run/memcached.pid ##启动memcached# ss -tlnp# kill `cat /var/run/memcached.pid` ##关闭memcached |
-d:启动一个守护进程
-m:用于缓存数据的最大内存空间(单位MB,默认64M)
-u:指定运行memcached的用户
-l:指定进程监听的IP地址(默认监听所有网卡)
-p:设置memcached的TCP监听端口(默认11211)
-U:指定监听的UDP端口(默认为11211,0表示关闭UDP端口)
-c:最大支持的并发连接数(默认1024)
-P:设置保存memcached的Pid文件
-t:用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效
-f:设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子
-M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间
-n:指定最小的slab chunk大小(单位是字节)
-S:启用sasl进行用户认证
③测试
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | # telnet 127.0.0.1 11211 ##测试memcachedTrying 127.0.0.1...Connected to 127.0.0.1.Escape character is '^]'.stats ##查看memcached状态STAT pid 11808 ##进程IDSTAT uptime 1008 ##服务器已运行秒数STAT time 1449555354 ##服务器当前Unix时间戳STAT version 1.4.25 ##memcached版本STAT libevent 2.0.22-stable ##libevent版本STAT pointer_size 64 ##服务器为64位STAT rusage_user 0.007571 ##进程累计用户时间STAT rusage_system 0.045427 ##进程累计系统时间STAT curr_connections 10 ##当前连接数量STAT total_connections 11 ##Memcached运行以来连接总数STAT connection_structures 11 ##Memcached分配的连接结构数量STAT reserved_fds 20 ##内部使用的FD数STAT cmd_get 0 ##get命令请求次数STAT cmd_set 0 ##set命令请求次数STAT cmd_flush 0 ##flush命令请求次数STAT cmd_touch 0 ##touch命令请求次数STAT get_hits 0 ##get命令命中次数STAT get_misses 0 ##get命令未命中次数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 15 ##读取总字节数STAT bytes_written 7 ##发送总字节数STAT limit_maxbytes 67108864 ##分配的内存总大小(字节)STAT accepting_conns 1 ##接受新的连接STAT listen_disabled_num 0 ##失效的监听数STAT time_in_listen_disabled_us 0STAT threads 4 ##当前线程数STAT conn_yields 0 ##连接操作主动放弃数目STAT hash_power_level 16 ##hash表等级STAT hash_bytes 524288 ##当前hash表大小STAT hash_is_expanding 0 ##hash表正在扩展STAT malloc_fails 0STAT bytes 0 ##当前存储占用的字节数STAT curr_items 0 ##当前存储的数据总数STAT total_items 0 ##启动以来存储的数据总数STAT expired_unfetched 0 ##已过期但未获取的对象数目STAT evicted_unfetched 0 ##已驱逐但未获取的对象数目STAT evictions 0 ##LRU释放的对象数目STAT reclaimed 0 ##已过期的数据条目来存储新数据的数目STAT crawler_reclaimed 0STAT crawler_items_checked 0STAT lrutail_reflocked 0END |
set:向缓存添加新的键值对.如果键已经存在,则之前的值将被替换
add:仅当缓存中不存在键时,add 命令才会向缓存中添加一个键值对。
如果缓存中已经存在键,则之前的值将仍然保持相同,并且您将获得响应NOT_STORED
replace:仅当键已经存在时,replace 命令才会替换缓存中的键。
如果缓存中不存在键,那么您将从memcached服务器接受到一条NOT_STORED响应
get:用于检索与之前添加的键值对相关的值
delete:用于删除memcached中的任何现有值。您将使用一个键调用delete ,如果该键存在于缓存中,则删除该值.如果不存在,则返回一条NOT_FOUND消息
gets:功能类似于基本的get命令。两个命令之间的差异在于,gets返回的信息稍微多一些:64 位的整型值非常像名称/值对的 “版本” 标识符
语法如下:
command <key> <flags> <expiration time> <bytes> <value>
参数 用法
key key用于查找缓存值
flags 可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息
expiration time 在缓存中保存键值对的时间长度(以秒为单位,0 表示永远)
bytes 在缓存中存储的字节点
value 存储的值(始终位于第二行)
缓存管理命令
stats:转储所连接的memcached实例的当前统计数据
flush_all:清理缓存中的所有名称/值对
五、安装memcached的PHP扩展
①下载相应程序
1234 | # yum -y install gcc gcc-c++ autoconf automake libtool flex bison libxml2-devel gd-devel libmcrypt-devel libcurl-devel openssl-devel# wget http://cn2.php.net/distributions/php-5.6.16.tar.gz # wget http://nginx.org/download/nginx-1.9.7.tar.gz# wget http://pecl.php.net/get/memcache-3.0.8.tgz |
a.编译PHP
12345678 | # tar -zxvf php-5.6.16.tar.gz# cd php-5.6.16# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --enable-shared --with-libxml-dir --with-gd --with-openssl --enable-mbstring --with-mcrypt --with-mysqli --with-mysql --enable-mysqlnd --enable-zip --with-zlib-dir --with-pdo-mysql --with-jpeg-dir --with-freetype-dir --with-curl# make# make install# cp php.ini-production /usr/local/php/etc/php.ini ##复制php.ini配置文件# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf# cp sapi/fpm/php-fpm.service /etc/init.d/ ##复制php-fpm启动脚本 |
1234567 | # tar -zxvf memcache-3.0.8.tgz# cd memcache-3.0.8# /usr/local/php/bin/phpize # ./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache# make# make installInstalling shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/ |
编辑/usr/local/php/etc/php.ini,在“动态模块”相关的位置添加如下:
123 | # vi /usr/local/php/etc/php.ini736 ; extension_dir = "ext"737 extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/memcache.so |
1234567891011121314151617 | # groupadd -r nginx# useradd -r -g nginx nginx# tar -zxvf nginx-1.9.7.tar.gz# cd nginx-1.9.7./configure \ --prefix=/usr \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-pcre# make# make install |
123456789101112131415 | # /etc/nginx/nginx.conf server { listen 80; server_name localhost; location / { root html; index index.html index.htm index.php; }location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi.conf; } |
a.新建测试页
1234567891011 | # vi /usr/html/test.php ##新建测试页面<?php$mem = new Memcache;$mem->connect("127.0.0.1", 11211) or die("Could not connect");$version = $mem->getVersion();echo "Server's version: ".$version."<br/>\n";$mem->set('newkey', 'Hello World', 0, 600) or die("Failed to save data at the memcached server");echo "Store data in the cache (data will expire in 600 seconds)<br/>\n";$get_result = $mem->get('newkey');echo "$get_result is from memcached server.";?> |
1234 | # systemctl start php-fpm# /usr/sbin/nginx# systemctl start memcached# ss -tlnp |
![](http://s4.51cto.com/wyfs02/M00/77/71/wKiom1Zn3PmByu0kAABOzfHQm90598.png)
六、配置PHP使用memcached
①配置php.ini
1234567 | # vi /usr/local/php/etc/php.ini1385 [Session]1386 ; Handler used to store/retrieve data.1387 ; http://php.net/session.save-handler1388 ;session.save_handler = files1389 session.save_handler = memcache 1390 session.save_path = "tcp://127.0.0.1:11211" |
12345678910 | # vi /usr/html/set.php<?phpsession_start();if (!isset($_SESSION['www.zhi.com'])) { $_SESSION['www.zhi.com'] = time();}print $_SESSION['www.zhi.com'];print "<br><br>";print "Session ID: " . session_id();?> |
123456789 | # vi /usr/html/get.php<?phpsession_start();$memcache_obj = new Memcache;$memcache_obj->connect('127.0.0.1', 11211);$session=session_id();var_dump($memcache_obj->get($session));$memcache_obj->close();?> |
a.输入http://localhost/set.php查看
![](http://s1.51cto.com/wyfs02/M01/77/73/wKiom1Zn7FPBhCcAAABRaRLDQfk565.png)
b.输入http://localhost/get.php查看
![](http://s4.51cto.com/wyfs02/M01/77/72/wKioL1Zn7O6S1gWPAABMF4NuLio960.png)
七、使用memadmin管理memcached
①简介
MemAdmin是一款可视化的Memcached管理与监控工具,使用PHP开发,体积小,操作简单。
主要功能:
a.服务器参数监控:STATS、SETTINGS、ITEMS、SLABS、SIZES实时刷新
b.服务器性能监控:GET、DELETE、INCR、DECR、CAS等常用操作命中率实时监控
c.支持数据遍历,方便对存储内容进行监视
d.支持条件查询,筛选出满足条件的KEY或VALUE
e.数组、JSON等序列化字符反序列显示
f.兼容memcache协议的其他服务,如Tokyo Tyrant (遍历功能除外)
g.支持服务器连接池,多服务器管理切换方便简洁
②下载安装
12 | # wget -S http://www.junopen.com/memadmin/memadmin-1.0.12.tar.gz# mv memadmin /usr/html/ |
浏览器输入http://localhost/memadmin【用户名密码均为admin】
![](http://s2.51cto.com/wyfs02/M01/77/73/wKiom1Zn8UySMPM0AAB0eOsoqxo698.png)
![](http://s1.51cto.com/wyfs02/M02/77/73/wKiom1Zn8dmgdoWVAAEZjIoGJBI523.png)
本文出自 “记事本” 博客,请务必保留此出处/article/7194556.html
相关文章推荐
- memcache共享session
- memcache共享session
- 安装和使用memcached
- php模块memcache和memcached区别分析
- Redis和Memcache对比及选择
- 新手学习memcached【win7】(一) 安装和启动/停止
- linux 安装memcached libmemcached libevent freetds
- memcached -- 运行memcached
- memcached在大负载高并发网站上的应用(一)
- 安装memcached扩展
- 使用Memcache在PHP中调试方法的介绍及应用
- Memcached 之 .NET(C#)实例分析
- memcache安装64位系统
- 在分布式项目中使用memcached+cookie替代session
- memcache详细说明
- 为何Redis要比Memcached好用
- 分布式缓存系统Memcached简介与实践
- 统缓存全解析7:第三方分布式缓存解决方案 Memcached和Cacheman
- Memcache+Tomcat9集群实现session共享(非jar式配置, 手动编写Memcache客户端)
- memcached—关于使用的一个故事