memcahe 是一个分布式储存系统,分布式主要体现在各个服务器之间是没有联系的,主要是通过内存来维护一张hash表,hash表主要是以键值对方式存储的,就是一款cs软件包.
key | value |
mystr | “abc” |
myarr | Array(“aa”, “cc”); |
object | Object值 |
工作原理
Memcache 软件, memcached
memcached是以守护程序方式运行在一个或者多个服务之中,随时客服端的操作和连接.
关于memcache的安装
在linux 下面的安装
基于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
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 显示帮助七、如何遍历memcache
八、在PHP程序中使用Memcached a 在PHP安装Memcache扩展 可以按面向过程方式 面向对象的方式 b 在PHP什么地方使用memcache 一、 数据库读出来的数据(select)使用memcache处理 二、 在会话控制session中使用 c 实例九、Memcache的安全(不让别人访问) 1 .内网 2. 设置放火墙 Iptables –A INPUT –p tcp –s 192.168.1.111 –dport 11211 –j ACCEPT Iptables –A INPUT –p udp –s 192.168.1.111 –dpost 11211 –j ACCEPT 安装. 然后开始 memcached -d startCommand | 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 | 当前线程数 |
使用 php 操作 memcache
<?php
$mem=new Memcache; $mem->connect("localhost", 11211); /* * 注意: * 1. 同一个项目安装两次,key要有前缀 * * */ $sql="select * from shops"; $key=substr(md5($sql), 10, 8); $data=$mem->get($key); if(!$data){ $mysqli=new mysqli("localhost", "root", "123456", "xsphpdb"); $result=$mysqli->query($sql); $data=array(); while($row=$result->Fetch_assoc()){ $data[]=$row; } $result->free(); $mysqli->close(); $mem->set($key, $data, MEMCACHE_COMPRESSED, 3600); echo $sql; } echo '<pre>'; print_r($data); echo '</pre>'; $mem->close();比较不错的资料 推荐 http://my.oschina.net/leetiger/blog/201248#OSC_h3_2