您的位置:首页 > 数据库 > Memcache

php与memcached memcached

2014-03-28 23:16 344 查看
废话从不多说,直接上图.




简介:
Memcached是什么?
[b]memcached
是一套[/b]分布式的高速缓存系统,由liveJournal的Brad Fitzpatrick开发,但目前被许多网站使用。这是一套开源代码软件,以
BSD licens授权发布。 Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。
Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每秒动态页面访问量几千次,用户700万。Memcached将数据库负载大幅度降低,更好的分配资源,更快速访问。 memcached主页: http://memcached.org/ 原作者 Brad fitzpatrick 语言 :C语言 类型:高速缓存服务器.

安装memcached;

# tar xf  memcache-2.2.7.tgz
# cd memcache-2.2.7
# /usr/local/php/bin/phpize
# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
# make && make install
# Build complete.
# Don't forget to run 'make test'.
# Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/
# vim /usr/local/php/lib/php.ini 添加如下两行
# extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/"
# extension=memcache.so
# vim index.php # 编写网页测试脚本
# cat index.php
<?php
phpinfo()
?>


测试php是否能够支持memcache



memcached 基本使用:
memcached的基本命令(安装、卸载、启动、配置相关)
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB

-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助

memcached的基本命令(memcached 启动后用于对memcached管理的数据和本身运行状态相关的命令)
Command
Description
Example
get
Reads a value
get mykey
set
Set a key unconditionally
set mykey 0 60 5
add
Add a new key
add newkey 0 60 5
replace
Overwrite existing key
replace key 0 60 5
append
Append data to existing key
append key 0 60 15
prepend
Prepend data to existing key
prepend key 0 60 15
incr
Increments numerical key value by given number
incr mykey 2
decr
Decrements numerical key value by given number
decr mykey 5
delete
Deletes an existing key
delete mykey
flush_all
Invalidate specific items immediately
flush_all
Invalidate all items in n seconds
flush_all 900
stats
Prints general statistics
stats
Prints memory statistics
stats slabs
Prints memory statistics
stats malloc
Print higher level allocation statistics
stats items
stats detail
stats sizes
Resets statistics
stats reset
version
Prints server version.
version
verbosity
Increases log level
verbosity
quit
Terminate telnet session
quit
对查看的信息的关键字中英文对照表
pid
memcache服务器的进程ID
uptime
服务器已经运行的秒数
time
服务器当前的unix时间戳
version
memcache版本
pointer_size
当前操作系统的指针大小(32位系统一般是32bit)
rusage_user
进程的累计用户时间
rusage_system
进程的累计系统时间
curr_items
服务器当前存储的items数量
total_items
从服务器启动以后存储的items总数量
bytes
当前服务器存储items占用的字节数
curr_connections
当前打开着的连接数
total_connections
从服务器启动以后曾经打开过的连接数
connection_structures
服务器分配的连接构造数
cmd_get
get命令(获取)总请求次数
cmd_set
set命令(保存)总请求次数
get_hits
总命中次数
get_misses
总未命中次数
evictions
为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
bytes_read
总读取字节数(请求字节数)
bytes_written
总发送字节数(结果字节数)
limit_maxbytes
分配给memcache的内存大小(字节)
threads
当前线程数
测试memcached:在memcached解压包中提供了一个测试的小程序;

# more example.php
<?php
$memcache = memcache_connect('localhost', 11211);
if ($memcache) {
$memcache->set("str_key", "String to store in memcached");
$memcache->set("num_key", 123);
$object = new StdClass;
$object->attribute = 'test';
$memcache->set("obj_key", $object);
$array = Array('assoc'=>123, 345, 567);
$memcache->set("arr_key", $array);
var_dump($memcache->get('str_key'));
var_dump($memcache->get('num_key'));
var_dump($memcache->get('obj_key'));
}
else {
echo "Connection to memcached failed";
}
?>
安装memcached,安装memcached依赖libevent的开发包;
# yum -y install libevent-devel
# tar xf memcached-1.4.15.tar.gz
# ./configure
# make
# make install
提供memcached服务脚本
#!/bin/bash
#
#chkconfig: - 86 14
#config : /etc/sysconfig/memcached
.   /etc/rc.d/init.d/functions
##Default varibles
PORT="11211"
USER="nobody"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
PETVAL=0
prog="/usr/local/bin/memcached"
desc="Distributed memory cacching"
lockfile="/var/lock/subsys/memcached"
start() {
echo -n $"Starting $desc (memcached): "
daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE $OPTIONS
PETVAL=$?
echo
[ $PETVAL -eq 0 ] && touch $lockfile
return $PETVAL
}
stop () {
echo -n $"Shutting down $desc (memcached) :"
killproc $prog
PETVAL=$?
echo
[ $PETVAL -eq 0 ] && rm -rf $lockfile
return $PETVAL
}
restart () {
start
stop
}
reload () {
echo -n $"Reloading $desc ($prog) :"
killproc $prog -HUP
PETVAL=$?
echo
return    $PETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
*)
echo " start|stop|restart|reload|"
esac
# vim /etc/rc.d/init.d/memcached
# chkconfig --add memcached
# chkconfig --list memcached
memcached       0:off   1:off   2:off   3:off   4:off   5:off   6:off
# chkconfig memcached on
# chkconfig --list memcached
memcached       0:off   1:off   2:on    3:on    4:on    5:on    6:off
# service memcached start
Starting Distributed memory cacching (memcached):          [  OK  ]
写一个测试脚本网页程序
<?php
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$memcache->set('key', 'test');
$get_value = $memcache->get('key');
echo $get_value;
?>
在memcache的解压包中,提供了一个测试程序;

# cp /root/memcache-2.2.7/example.php  /usr/html/
# cd  /usr/html/
# cat example.php
?php
$memcache = memcache_connect('localhost', 11211);
if ($memcache) {
$memcache->set("str_key", "String to store in memcached");
$memcache->set("num_key", 123);
$object = new StdClass;
$object->attribute = 'test';
$memcache->set("obj_key", $object);
$array = Array('assoc'=>123, 345, 567);
$memcache->set("arr_key", $array);
var_dump($memcache->get('str_key'));
var_dump($memcache->get('num_key'));
var_dump($memcache->get('obj_key'));
}
else {
echo "Connection to memcached failed";
}
?>
测试:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息