声明:
此文章是观看韩顺平老师教程时,自己整理的笔记,与韩老师上课时所作的笔记类似。
1. memcahe提高数据访问速度。将数据放入内存中。
(1)直接查询:读取需要的数据
(2)使用真静态:从磁盘中读取数据。
(3)使用mencache:从内存中获取数据。
2. memcahe维护了一张内存表(hashtable)用键值对存放数据。
Key value
100 10
说明:memcahe的key一般是字串不能重复。否则就会被冲掉。
Value可以放入字符串、数值、布尔值、数组、对象、二进制
3. 安装使用memcached
(1)下载memcached软件 减压后。
(2)打开cmd cd到memcached.exe存放的地方
(3)然后安装指令:memcached.exe –d install
启动memcached
(1) 到计算机管理/服务和应用程序处启动
(2) 命令行启动:memcached.exe –d start
(3) 使用netstat –an 如果看到11211端口在监听,就说明启动成功。
说明:使用netstat –an还可以看到那些IP正在访问这个服务器。
使用netstat –anb可以查看哪个程序正在使用哪个端口。
(4) 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 |
当前线程数 |
4.使用memcached如何进行增删改查。
(1)通过PHP程序操作用的最多。
(1)memcache扩展操作
(2)memcached扩展操作
(3)直接使用socket编程来操作
(2)telnet工具操作
Telnet操作:
(1)登录到telnet链接到memcached服务。
telnet 127.0.0.1(要链接服务器的IP地址) 11211
(2)增加
基本语法:add key1(键名) 0(占位符) 30(保存时间) 5(值的长度) 回车后 输入值
(3)获取
基本语法:get key1(键值)
(4)修改
基本语法:set key1 0 存放时间 值大小(key1不存在增加)
或者使用:replace key1 0 存放时间 值大小(key1不存在失败)
(5)删除
delete key1
使用PHP程序操作memcached服务(curd):
(1)把对应版本的php_memcache.dll文件下载保存到php的ext下。
(2)修改php.ini文件:extension=php_memcache.dll(上面的dll文件名。)
(3)重启apache
使用直接使用socket编程来操作:
(1)别人写好的函数源码,直接操作。
5.memcached机制深入了解。
(1)使用memcached是基于CS结构。Memcached作为服务器。
(2)基于libevent的事件处理并发机制。
(3)数据放入内存中。
(4)基于客户端分布式。
说明:
(1)生命周期:若把时间设为0,则表示永不过期。
(2)重启memcached服务,那么里面的数据都会销毁。
(3)如何把session数据放入memcached中。
(1)在php.ini中配置 在[Session]中修改:
session.save_handler = memcache(设置以何种方式存放)
session.save_path ="tcp://127.0.0.1:11211"(设置session存放路径)
说明:这样就可以将session保存到memcached中,我们不用管它如何保存,我们依然用$_SESSION[]取出该值。
(2)或者在页面中使用ini_set()改变当前页面的php.ini中配置。
ini_set(“session.save_handler”,” memcache”);
ini_set(“session.save_path”,” tcp://127.0.0.1:11211”);
(4)memcahe数据是无状态的,不和任何用户绑定。
(5)memcache安全性。将memcached放到内网。然后设置防火墙。
(6)什么样的数据适合放入memcached中?
(1)变化频繁,具有不稳定性的数据,不需要实时入库, (比如用户在线状态、在线人数..)
(2)门户网站的新闻等,觉得页面静态化仍不能满足要求,可以放入
(7)Redis(Key/value型数据库)技术与memcache类似,将数据保存在内存中,并定时向硬盘中同步