zoukankan      html  css  js  c++  java
  • php使用memcached缓存总结

    1. 查询多行记录,以sql的md5值为key,缓存数组(个人觉得最好用的方法)

    复制代码
    $mem = new Memcache();
    $mem->connect('127.0.0.1',11211);
    $id = (int)$_GET['id'];
    $sql = "SELECT * FROM test WHERE id='$id'";
    $key = md5($sql);
    //数据库查询是否已经缓存到memcahced服务器中
    if(!($datas = $mem->get($key)))
    {
        echo 'mysql<br />';
        //如果在memcached中没获取过数据,连mysql获取
        $conn = mysql_connect('localhost','root','123456');
        mysql_select_db('test');
        $result = mysql_query($sql);
        while($row = mysql_fetch_assoc($result))
        {
            $datas[] = $row;
        }
        //再把mysql获取的数据保存到memcached中,供下次使用
        $mem->add($key,$datas);
    }
    else
    {
        echo 'memcache<br />';
    }
    print_r($datas);
    复制代码

    2.查询单行记录,缓存该行记录,以id值为key(也可用md5后的sql语句为键)

    复制代码
    $rangeid = rand(600,1276);
    $rangeid = '1237';
    $mem = new Memcache;
    $mem->connect('127.0.0.1',11211);
    if( ($com = $mem->get($rangeid)) === false) 
    {
        echo '来自mysql<br />';
        $conn = mysql_connect('localhost','root','123456');
        $sql = 'use dedecms';
        mysql_query($sql,$conn);
        $sql = 'set names utf8';
        mysql_query($sql,$conn);
        $sql = 'select aid,actors from dede_addonmovie where aid=' . $rangeid;
        $rs = mysql_query($sql,$conn);
        $com = mysql_fetch_assoc($rs);
        $mem->add($rangeid , $com , false, 60);
    }
    else 
    {
        echo '来自memcache<br />';
    }
    header('content-type:text/html;charset=utf8;');
    print_r($com);
    复制代码

    也可以用另一种方式连接memcache

    复制代码
    $rangeid = rand(600,1276);
    $mconn = memcache_connect('localhost',11211);
    if( ($com = memcache_get($mconn,$rangeid)) === false) 
    {
        $conn = mysql_connect('localhost','root','123456');
        $sql = 'use dedecms';
        mysql_query($sql,$conn);
        $sql = 'set names utf8';
        mysql_query($sql,$conn);
        $sql = 'select aid,actors from dede_addonmovie where aid=' . $rangeid;
        $rs = mysql_query($sql,$conn);
        $com = mysql_fetch_assoc($rs);
        memcache_add($mconn , $rangeid , $com , false, mt_rand(40,120));
    }
    else
    {
        echo 'from cache';
    }
    print_r($com);
    复制代码
    清风明月本无价,近水远山皆有情。
  • 相关阅读:
    设计模式的概念与作用
    动画回调函数未执行
    使用PathfindingProject Pro 4.0.10实现2D自动寻路
    一些概念和路径记录
    android 数据库添加字符串 添加失败 解决方案
    view的focusable属性改变设置是否可获取光标
    view的clickable属性和点击background颜色改变
    java中一对多 关联建表
    Android 自定义View
    Android 之常用布局
  • 原文地址:https://www.cnblogs.com/onlylove2015/p/4392019.html
Copyright © 2011-2022 走看看