zoukankan      html  css  js  c++  java
  • PHP Memcached 实现简单数据库缓存

    Memcache常用方法


    Memcache::add — 添加一个值,如果已经存在,则返回false
    Memcache::addServer — 添加一个可供使用的服务器地址
    Memcache::close — 关闭一个Memcache对象
    Memcache::connect — 创建一个Memcache对象
    Memcache::debug — 控制调试功能
    Memcache::decrement — 对保存的某个key中的值进行减法操作
    Memcache::delete — 删除一个key值
    Memcache::flush — 清除所有缓存的数据
    Memcache::get — 获取一个key值
    Memcache::getExtendedStats — 获取进程池中所有进程的运行系统统计
    Memcache::getServerStatus — 获取运行服务器的参数
    Memcache::getStats — 返回服务器的一些运行统计信息
    Memcache::getVersion — 返回运行的Memcache的版本信息
    Memcache::increment — 对保存的某个key中的值进行加法操作
    Memcache::pconnect — 创建一个Memcache的持久连接对象
    Memcache::replace — R对一个已有的key进行覆写操作
    Memcache::set — 添加一个值,如果已经存在,则覆写
    Memcache::setCompressThreshold — 对大于某一大小的数据进行压缩
    Memcache::setServerParams — 在运行时修改服务器的参数 

    下面是一段简单的测试代码,代码中对标识符为 'mykey' 的对象数据进行存取操作

    <?php 
    // 包含 memcached 类文件 
    require_once('memcached-client.php'); 
    // 选项设置 
    $options = array( 
    'servers' => array('192.168.1.1:11211'), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务 
    'debug' => true, //是否打开 debug 
    'compress_threshold' => 10240, //超过多少字节的数据时进行压缩 
    'persistant' => false //是否使用持久连接 
    ); 
    // 创建 memcached 对象实例 
    $mc = new memcached($options); 
    // 设置此脚本使用的唯一标识符 
    $key = 'mykey'; 
    // 往 memcached 中写入对象 
    $mc->add($key, 'some random strings'); 
    $val = $mc->get($key); 
    echo "n".str_pad('$mc->add() ', 60, '_')."n"; 
    var_dump($val); 
    // 替换已写入的对象数据值 
    $mc->replace($key, array('some'=>'haha', 'array'=>'xxx')); 
    $val = $mc->get($key); 
    echo "n".str_pad('$mc->replace() ', 60, '_')."n"; 
    var_dump($val); 
    // 删除 memcached 中的对象 
    $mc->delete($key); 
    $val = $mc->get($key); 
    echo "n".str_pad('$mc->delete() ', 60, '_')."n"; 
    var_dump($val); 
    ?> 

    实际应用中,通常会把数据库查询的结果集保存到 memcached 中,下次访问时直接从 memcached 中获取,而不再做数据库查询操作,这样可以在很大程度上减轻数据库的负担。通常会将 SQL 语句 md5() 之后的值作为唯一标识符 key。下边是一个利用 memcached 来缓存数据库查询结果集的示例

    <?php 
    $sql = 'SELECT * FROM users'; 
    $key = md5($sql); //memcached 对象标识符 
    if ( !($datas = $mc->get($key)) ) { 
    // 在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。 
    echo "n".str_pad('Read datas from MySQL.', 60, '_')."n"; 
    $conn = mysql_connect('localhost', 'test', 'test'); 
    mysql_select_db('test'); 
    $result = mysql_query($sql); 
    while ($row = mysql_fetch_object($result)) 
    $datas[] = $row; 
    // 将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。 
    $mc->add($key, $datas); 
    } else { 
    echo "n".str_pad('Read datas from memcached.', 60, '_')."n"; 
    } 
    var_dump($datas); 
    ?> 

    可以看出,使用 memcached 之后,可以减少数据库连接、查询操作,数据库负载下来了,脚本的运行速度也提高了。

  • 相关阅读:
    从零开始Windows环境下安装python+tensorflow
    Opencv调用深度学习模型
    python tensorflow 安装
    OpenCV3 Ref SVM : cv::ml::SVM Class Reference
    OpenCV3编程入门笔记(一)
    Tensorflow学习教程变量
    opencv3.0机器学习算法使用
    Tensorflow学习教程Fetch and Feed
    multilayer perceptrons, MLP)模型,CvANN_MLP。
    域的安装配置介绍
  • 原文地址:https://www.cnblogs.com/fuland/p/4136053.html
Copyright © 2011-2022 走看看