dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2165
  • 铜币13236枚
  • 威望5838点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
阅读:1119回复:0

[php] memcache 类示例

楼主#
更多 发布于:2017-03-03 09:49
目标
1. 使用 memcache()类,操作 memcached 服务器;
2. 练习 设置key/value,TTL过期时间,查询,替换,删除等基础操作;

功能
php 中的 memcache模块,提供了于memcached方便的面向过程及面向对象的接口
memcached是为了降低动态web应用 从数据库加载数据而产生的一种常驻进程缓存产品。

环境
memcached_IP:memcache-server
memcached_port:11211
php 5.6

代码
cat public/memcache.php
<?php

// smarty class
require_once '../init.php';

//memcache 对象
$mem = new Memcache();

$memHost='memcache-server';
$memPort='11211';

// 打开一个memcached服务端连接
$conn = $mem->connect($memHost, $memPort);
if($conn == FALSE) {
    die("Error, can't connet the memcache $memHost:$memPort");
}

// 存储key/value
// 设置'var_key'对应值,使用即时压缩,失效时间为60秒
$key = "name";
$mem->set($key,'dongnan',MEMCACHE_COMPRESSED,60);

// 检索一个元素
$value = $mem->get($key);
echo  "key:${value}
";

// 替换已经存在的元素的值
// 设置'var_key'对应值,使用即时压缩,失效时间为60秒
$mem->replace($key,'http://ywwd.net',MEMCACHE_COMPRESSED,60);
$new = $mem->get($key);
echo "key:new $new
";

// 从服务端删除一个元素
$mem->delete($key);
if($mem->get($key) == FALSE) {
    echo "key:deleted.
";
}

// 删除所有的元素
$mem->flush();

// 获取服务器统计信息
$stats=$mem->getstats();

// close
$mem->close();

// 输出到模板引擎
$dong->assign("title","learn memcache class.");
$dong->assign("footer","this is footer.");
$dong->assign("show",$stats);
$dong->display("memcache.tpl");
传递数组
向smarty 模板引擎,传递 $stats数组,smarty 遍历数组,参考 https://ywwd.net/read-1284#1297

小结
1. 使用 memcache扩展提供的memcache()类,完成 memcache服务器操作;
2. Memcache()类,使用面向对象的方式,来完成对 memcache服务器操作支持;
    connect()方法,用于创建 memcache服务器的链接,失败返回 FALSE;
    set()方法,用于设置key/value ,参数3:MEMCACHE_COMPRESSED ,使用压缩,参数4:设置过期时间;
    get()方法,用于获取value;
    replace()方法,用于替换已经存在的元素的值;
    delete()方法,用于从服务端删除一个元素;
    flush()方法,用于删除(清空)所有的元素;
    getstats()方法,用于获取服务器统计信息;
    close()方法,用于最后关与 memcache服务器的链接;

参考: memcache 类
http://php.net/manual/zh/intro.memcache.php
http://php.net/manual/zh/class.memcache.php

#
游客

返回顶部