您的位置:首页 > 数据库 > Memcache

memcache学习笔记

2013-09-22 15:34 281 查看
memcache

一,Memcache概述===================

高性能分布式的内存对象缓存系统,通过在内存里维护一个巨大的hash表。

(key = value)

是一个软件(服务软件)c/s软件

维护内存的,是将数据在内存中使用,减少了I/O 150K

开源的,

端口:11211

二,原理======================

Memcache 软件 memcached

memcached是以守护程序方式运行于一个或多个服务器中,随时接收客户端的连接和操作。

客户端可以使用各种语言去编写,php,java,c,c++,perl,python,ruby等

基于libevent事件,即libevent库

三,为什么在web中使用Memcache============

不用查数据库,可以分布式存储

四,安装===================

linux下安装

先安装 libevent
再安装 memcache
./configure --with-libevent=/usr/local/libevent

启动 Memcache -d -m 128 -l 192.168.1.111 -p 11211 -u root

停止:kill memcached
或 kill cat /tmp/memcached.pid

windows 安装

放到目录下,然后
命令
memcache.exe -d install

服务 -》里面就有memcache

memcache.exe -d uninstall 缷载
memcache.exe -d -m 50 -l 127.0.0.1 -p 11211 start 自启动

五,操作===============

telnet 192.168.1.111 80 ........apache
telnet 192.168.1.111 22 ........ssh
telnet 192.168.1.111 11211 ........memcache

stats 查看状态

添加变量
add mykey1 1 3000 10
添加 变量 标志位 有效期 字符串长度
helloworld

获取变量
get myval1

使用get可以覆盖以前的变量
set myval1 1 3000 10
1234567890
get myval1

删除
delete myval1

清除所有的
flush_all

quit 退出

再进还能获得,重启服务后就没有了

version 版本

stats 状态

stats sizes 使用量

stats items

stats cachedump 1 1 查看一条标志位为1的数据

stats chchedump 1 0 查看所有标志位为1的数据

六,memcache在php 中使用=======================

下载memcache.dll扩展到php扩展目录中,然后在php配置文件中添加,重启,就有了对memcache的支持

php有一系列操作memcache的函数

有面向过程,还有面向对象

具体可以参考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 -- 分布式服务器添加一个服务器

demo:

<?php

$mem = new Memcache;
$mem->connect("loclahost",11211);
//$mem->addServer("www.lamp.com",11221);
//$mem->addServer("192.168.1.111",11211);

//添加字符串
$mem->add("mystr","this is a memcachetest",MEMCACHE_COMPRESSED,3600);

$mem->set("mystr","wwwwwwwwwwwww",MEMCACHE_COMPRESSED,3600);

$str = $mem->get("mystr");
echo "string:".$str;

$mem->delete("mystr"); //删除一个变量
$mem->flush(); //删除所有的

//添加数组
$mem->add("myarr",array("aaa","bbb","ccc"));
print_r($mem->get("myarr"));

//添加对象
class Person{

var $name="zhangshan";
var $age=10;

}

$mem=add("myobj",new Person);
var_dump($mem->get("myobj"));

//读出状态
echo $mem->getVersion();
print_r($mem->getStats());

$mem->close();

?>

七,php在什么地方使用memcache

1,数据库读出来的数据(select)
2, 在会话控制session中使用

同一个项目安装两次,key要有前缀
<?php

$mem = new Memcache;
$mem->connect("loclahost",11211);

$data = $mem->get("shops");

if(!$data){
$sql = "select * from shops";
$mysqli = new mysqli("localhost","root","","shopsdb");
$result = $mysqli->query($sql);
$data = array();
while($row=$result->Fetch_assoc()){
$data[]=$row;
}
$result->free();
$mysqli->close();

$mem->set("shops",$data,MEMCACHE_COMPERSSED,3360);

}

$mem->close();

?>

八,安全=================

1, 用内网的服务器做memcache服务器
2, 设置防火墙
命令:iptables

本文出自 “为明天做好准备” 博客,请务必保留此出处http://zaikuip.blog.51cto.com/4128335/1300125
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: