php学习之Memcache及其实例

前面已经安装好了memcache,接下来开始使用memcache
整理自兄弟连视频教程

Memcache基本知识

memcache概念

memcache(内存,缓存): 高性能的分布式对象缓存系统,通过在内存里维护一个巨大的hash表
--------------------------
|key  |value     
|mystr |"abc"     
|myarr |Array('aa','cc')   
|object |Object值        
--------------------------
利用memcache缓存来减小数据库的负载

就是一个软件(服务软件)c/s软件,类似
mysql   一个ip  一个端口
Apache  www.baidu.con 80

维护内存,将数据在内存中使用,减小I/O,很小的一个软件150k,同时是一个开源

监听129.121.11.111  端口11211

memcache工作原理

memcache 软件 memcached 进程
类似 http  httpd
     vsftp vsftpd
c/s软件
memcached是以守护程序运行于一个或多个服务器中,随时会接收客户端的连接和操作。
客户端可以使用各种语言编写,例如php/java/c/python

memcache使用c语言编写,使用了libevent,所以需要安装libevent库

为什么在WEB中使用memcache

对于大型的网站,需要使用memcache提高访问速度

安装memcache服务器(Linux和windows)

memcache基于libevent事件,需要先安装这个库
Linux:直接源文件安装,
    安装libevent  ./configure -with-libevent=/usr
            make && make install
    安装memcache  ./configure -with-libevent=/usr
            make && make install
    启动 memcached -d -m 128 -1 192.168.1.11 -p 11211 -u root
    停止 kill memcache进程
Windows 
    memcached.exe -d install[uninstall]
    监听本地地址,端口11211
    memcached.exe -d -m 50 -l 127.0.0.1 -p 11211 start
              使用内存大小,默认64M

memcache的启动管理

memcached -d start
基本设置(memcache -h  帮助)

操作memcache

命令行方式 Telnet作为客户端
telnet 192.168.1.128 80 --Apache
telnet 192.168.1.129 21 --ftpd
telnet localhost 11211 --memcached
这个需要开始telnet服务

基本命令

以下运行均在命令行的模式下

运行telnet localhost 11211进入Memcache界面
version 输出Memcache版本

add命令
格式:命令 变量名 一个16位的无符号数 有效期(秒) 长度

add myvar1 1 3000 10
helloword
STORED

add 仅能添加不存在的键,存在则存储失败

add myval1 1 300 10
heldsgdhjk
NOT_STORED
get myval1
VALUE myval1 1 10
helloworld
END

get
格式:命令 变量名

get myval1
VALUE myval1 1 10
helloworlf
END

set
类似add命令

set myval1 1 3000 10
hekekrkdsa
STORED
get myval1
VALUE myval1 1 10
hekekrkdsa
END

delete
格式: delete 变量名

delete myval1
DELETED
get myval1
END

stats

stats sizes
STAT 96 1
STAT 128 1
STAT 12640 1
STAT 12672 1
END
//查看Memcache中的items
stats items
STAT items:1:number 7
STAT items:1:age 932
STAT items:1:evicted 0
STAT items:1:outofmemory 0
END

stats cachedump 1 1
ITEM mn [4 b; 1463836268 s]
END
//查看全部
stats cachedump 1 0
ITEM mn [4 b; 1463836268 s]
ITEM myval3 [10 b; 1463836120 s]
ITEM myval2 [10 b; 1463837080 s]
ITEM myvql1 [10 b; 1463835968 s]
ITEM myvql1 [10 b; 1463835923 s]
ITEM myvql [10 b; 1463835870 s]
ITEM mysql [10 b; 1463837371 s]

测试php是否支持memcache库

<?php
    phpinfo();
?>

查看发现不支持memcache库,找到php家目录,在ext中添加php_memcache.dll,修改php.ini

PHP使用memcache的情况

1、数据库读出来的数据(select)使用memcache处理
2、在会话控制中使用,将用户的信息存放在memcache中

memcache安全性

1、内网访问,不暴漏在外网上
2、设置防火墙

php手册之memcache

Memcache — The Memcache class
Memcache::add — Add an item to the server
Memcache::addServer — Add a memcached server to connection pool
Memcache::close — Close memcached server connection
Memcache::connect — Open memcached server connection
Memcache::decrement — Decrement item’s value
Memcache::delete — Delete item from the server
Memcache::flush — Flush all existing items at the server
Memcache::get — Retrieve item from the server
Memcache::getExtendedStats — Get statistics from all servers in pool
Memcache::getServerStatus — Returns server status
Memcache::getStats — Get statistics of the server
Memcache::getVersion — Return version of the server
Memcache::increment — Increment item’s value
Memcache::pconnect — Open memcached server persistent connection
Memcache::replace — Replace value of the existing item
Memcache::set — Store data at the server
Memcache::setCompressThreshold — Enable automatic compression of large values
Memcache::setServerParams — Changes server parameters and status at runtime

连接

define('IP','localhost');
define('PORT',11211);
$mem = new Memcache();
//连接memcache
$mem->connect(IP,PORT);
//$mem->pconnect(IP,PORT) //持久连接

插入

Memcache::add(string key,mixed val[,flag[,expire]])
//键-value-是否压缩方式-保存时间(默认30天)
//如果memcache中不存在key,则存储,存在则不操作且返回false
//成功返回true,失败返回false(有可能是存在了key)
//$mem->add('tm1','this is the first string',MEMCACHE_COMPRESSED,3600)
//可以存储任意的数值,对象
$mem->add('tm1','this is the first string');

查询

$mem->get('tm1');

修改

//重置key的值,如果存在则替换,不存在则相当于add
$mem->set('tm1','settm1');
//存在与否的情况类似set方法
$mem->replace('tm2','replace2');

删除

$mem->delete('key');

清空

$mem->flush();

查询memcache状态

$mem->getVersion();

查询memcache版本

$mem->getStats();

实例

<?php
    define('IP','localhost');
    define('PORT','11211');

    //连接memcache
    $mem = new Memcache;
    $mem->connect(IP,PORT);

    /*
     * 一个项目有可能安装两次,所以对于key的设置
     * 最好加一个前缀
     */
    $sql = 'select * from hd_user';
    //$key = 'a'.'user';
    $key = md5($sql); //以sql语句作为key
    $time = microtime();
    //$mem->flush();
    $cache = $mem->get($key);
    if(!$cache){
        $mysqli = new mysqli('localhost','root','12345678','think1');
        //$sql = 'select * from hd_user';
        $result = $mysqli->query($sql);
        $rows = array();
        while($row = $result->fetch_assoc()){
            $rows[] = $row;
        }
        $mem->set($key,$rows,MEMCACHE_COMPRESSED,10);
        $result->free();
        $mysqli->close();
    }
    $row = $cache;

    echo "======<br>".(microtime() - $time). "<br>=======";
    echo "<pre>";
    print_r($rows);
?>

测试数据库和memcache的运行结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值