Memcache使用详解
查看当前的memcache连接数:
[root@mem1 ~]# netstat -n | grep :11211 | wc -l
15752
查看默认允许的连接数:
[root@mem1 ~]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/usr/local/bin/memcached -d -m 15360 -u root -l 172.20.1.54 -p 11211 -c 40960
/usr/local/bin/memcached -d -m 512 -u root -l 172.20.1.54 -p 11212 -c 10000
这里设置的11211端口默认连接数是40960
在网络上查到资料, Memcache也有自己的查看工具:
如何查看memcache服务器端版本: ./memcached -h
memcache的运行状态可以方便的用 stats 命令显示。
首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。
这些状态的说明如下:
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 | 当前线程数 |
memcache
一、Memcache概述
官网:http://memcached.org/。 Memcache(内存,缓存) : 是一个高性能的分布式的内存对象缓存系统。通过在内存里维护一个巨大的hash表。 (key=value)
Hash表
key | value |
mystr | “abc” |
myarr | Array(“aa”, “cc”); |
object | Object值 |
就是一个软件(服务软件) c/s软件
Mysql 129.12.121.11 3306
Apache www.baidu.com 80
维护内存,是将数据在内存中使用, 减少I/O 150k 开源
129.121.11.111 11211
二、Memcache工作原理
Memcache 软件, memcached
http httpd
vsftp vsftpd
c/s软件
memcached是以守护程序方式运行于一个或多个服务器中,随时会接收客户端的连接和操作。
客户端使用各种语言去编写 PHP/java/c/c++/perl/python/ruby等
libevent
三、为什么要在WEB中使用Memcache
基于libevent事件
Linux下
安装libevent时
./configure –with-libevent=/usr
Make && make install
安装memcached
./configure –with-libevent=/usr
Make && make install
启动Memcahced –d –m 128 –l 192.168.1.111 –p 11211 –u root
停止: kill `cat /tmp/memcached.pid`;
Killall memcached
四、安装Memcache服务器(Linux和Window上分别安装)
Windows下
安装与卸载:memcahced.exe -d install [uninstall]
启动:memcached.exe –d -m 50 –l 127.0.0.1 -p 11211 start
五、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 ,最大好像2G
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
六、操作Memcached (命令行方式telnet作为客户端)
telnet 192.168.1.128 80 --- apache
telnet 192.168.1.129 21 --- ftpd
telnet 192.168.1.111 22 ---ssh
telnet localhost 11211 ---memcached
七、如何遍历memcache
八、在PHP程序中使用Memcached
a 在PHP安装Memcache扩展
b 在PHP什么地方使用memcache
c 实例
九、Memcache的安全(不让别人访问)
安装. 然后开始 memcached -d start
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 | 当前线程数 |
具体可以参考PHP手册 “LXXXIV. Memcache Functions” 这章。
Memcache面向对象的常用接口包括:
Memcache::connect -- 打开一个到Memcache的连接
Memcache::pconnect -- 打开一个到Memcache的长连接
Memcache::close -- 关闭一个Memcache的连接
Memcache::set -- 保存数据到Memcache服务器上
Memcache::get -- 提取一个保存在Memcache服务器上的数据
Memcache::replace -- 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)
Memcache::delete -- 从Memcache服务器上删除一个保存的项目
Memcache::flush -- 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)
Memcache::getStats -- 获取当前Memcache服务器运行的状态
Memcache::addServer -- 分布式服务器添加一个服务器
10、常用命令
memcached数据存储和取回相关的基本命令只有4条。下面将采用telnet与memcached进行交互,并介绍这4条基本命令。假设memcached服务器在本机上,并监听在默认端口11211上。
telnet连接到memcached:telnet 127.0.0.1 11211
SET:添加一个新的条目到memcached,或是用新的数据替换掉已存在的条目
set test1 0 0 10
testing001
STORED
ADD:仅当key不存在的情况下存储数据。如果一个key已经存在,将得到NOT_STORED的响应
add test1 0 0 10
testing002
NOT_STORED
add test2 0 0 10
testing002
STORED
REPLACE:仅当key已经存在的情况下存储数据。如果一个key不存在,将得到NOT_STORED的响应
replace test1 0 0 10
testing003
STORED
replace test3 0 0 10
testing003
NOT_STORED
GET:从memcached中返回数据。从缓存中返回数据时,将在第一行得到key的名字,flag的值和返回的value的长度。真正的数据在第二行,最后返回END。如果key并不存在,那么在第一行就直接返回END。
get test1
VALUE test1 0 10
testing003
END
get test4
END
get test1 test2
VALUE test1 0 10
testing003
END
注:像上面那样你可以在一个请求中包含多个由空格分开的key。当请求多个key时,将只会得到那些有存储数据的key的响应。memcached将不会响应没有存储Data的key。