Memcache
Memcache
1.什么是Memcache?
a) memory+cache
b) 简单的说就是利用内存来缓存数据的一种机制
c) 高性能的分布式的对象缓存系统,是通过维护内存中一个巨大的hash表来实现数据缓存的一种操作.
d)
key |
value |
name |
丛浩 |
sex |
男 |
superman |
object(sex,age,heigh,weight......) |
xiaohuoban |
array(hb1,hb2......) |
memcache是一种软件,一种c/s架构的软件,memcache就是几十Kb
memcache的主要作用就是把所有需要缓存的数据写入内存,节省I/O开销,提高程序访问效率.
为什么要用memcache捏?
PHP链接MYSQL进行访问操作.如果进行大量的读取访问等操作,会导致MYSQL服务器跟不上,最终导致悲剧的发生....
缓存原理
在web服务器中,服务器apache服务器,主要消耗CPU资源,网站程序和文件资源主要消耗硬盘资源,没有程序消耗内存资源,memcache正是看到了这一点才选择使用内存来做缓存..
学习Memcache.
apache的进程名 httpd
mysql 的进程是mysqld
memcache的进程是 memcached
memcache的机制是一种以守护进程的方式运行在一台或者是多台服务器之中的,和apache类似.
可以操作memcache的语言很多,
memcache 如何window安装和使用.
安装memcache
memcached.exe -d install
启动服务
memcached.exe -d start
停止服务
memcached.exe -d stop
卸载 memcache
memcached.exe -d uninstall
安装时候的注意事项.
xp操作系统,可能报错,缺少 msvcr71.dll 找到文件位置 复制进去即可(GHOST系统会有这个问题)
win7/8 软件兼容性的问题,可以使用64位memcache
win7/8 请在管理员模式下安装,如果不是管理员,可以对软件进行右键操作->取得管理员权限.
memcache的其他操作
-p 监听的端口 默认值 11211
-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 显示帮助
使用客户端连接memcache
使用telnet 连接memcache
使用stats命令显示的结果内容:
Stats详解
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操作
Command |
Description |
Example |
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 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 |
删除一条数据 |
delete mykey |
flush_all |
清除所有数据 |
flush_all |
清除900秒之内的数据 |
flush_all 900 |
|
stats |
查看所有状态 |
stats |
Prints memory statistics |
stats slabs |
|
Prints memory statistics |
stats malloc |
|
Print higher level allocation statistics |
stats items |
|
|
stats detail |
|
已使用大小 |
stats sizes |
|
|
Stats cachedump 1 |
|
重置状态 |
stats reset |
|
version |
查看版本 |
version |
verbosity |
Increases log level |
verbosity |
quit |
退出telnet连接 |
quit |
memcache的数据存储命令:
add 命令 添加一条数据
格式:
add 键名 标志位 生存时间 数据长度 回车 ->输入数据
get 命令 获取数据的值
格式:
get 键名
set 命令 设置数据的值 可以添加数据(不存在数据),可以修改数据(已存在)
格式:
set 键名 标志位 生存时间 数据长度 回车->输入数据
replace 命令 修改已经存在的数据的值
格式:
replace 键名 标志位 生存时间 数据长度 回车->输入数据
delete 命令 删除一条数据
delete 键名
flush_all 清空数据
格式:
flush_all 清空所有数据
flush_all 时间 清除N秒以内的数据
解决安全的问题:
1.要钱的
增加网卡,为每台服务器配置2个网卡,一个内网网卡,一个外网网卡
2.不要钱.
配置防火墙,设置允许访问的IP地址..详情请参照细说PHP第519页.