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
|
当前线程数
|
下面是一段简单的测试代码,代码中对标识符为 'mykey' 的对象数据进行存取操作:
代码如下 | 复制代码 |
// 包含 memcached 类文件 require_once('memcached-client.php'); // 选项设置 $options = array( 'servers' => array('192.168.1.1:11211'), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务 'debug' => true, //是否打开 debug 'compress_threshold' => 10240, //超过多少字节的数据时进行压缩 'persistant' => false //是否使用持久连接 ); // 创建 memcached 对象实例 $mc = new memcached($options); // 设置此脚本使用的唯一标识符 $key = 'mykey'; // 往 memcached 中写入对象 $mc->add($key, 'some random strings'); $val = $mc->get($key); echo "n".str_pad('$mc->add() ', 60, '_')."n"; var_dump($val); // 替换已写入的对象数据值 $mc->replace($key, array('some'=>'haha', 'array'=>'xxx')); $val = $mc->get($key); echo "n".str_pad('$mc->replace() ', 60, '_')."n"; var_dump($val); // 删除 memcached 中的对象 $mc->delete($key); $val = $mc->get($key); echo "n".str_pad('$mc->delete() ', 60, '_')."n"; var_dump($val); ?> |
是不是很简单,在实际应用中,通常会把数据库查询的结果集保存到 memcached 中,下次访问时直接从 memcached 中获取,而不再做数据库查询操作,这样可以在很大程度上减轻数据库的负担。通常会将 SQL 语句 md5() 之后的值作为唯一标识符 key。下边是一个利用 memcached 来缓存数据库查询结果集的示例(此代码片段紧接上边的示例代码):
代码如下 | 复制代码 |
|
可以看出,使用 memcached 之后,可以减少数据库连接、查询操作,数据库负载下来了,脚本的运行速度也提高了。
好啦,至此memcached基本架设完成了,如果有啥问题或者有啥偶说的不对的欢迎来联系偶