0

0

memcached - 如何优雅的使用memcache和php配合呢?

php中文网

php中文网

发布时间:2016-06-06 20:49:38

|

1116人浏览过

|

来源于php中文网

原创

最近在研究memcache和php配合小弟不知道该如何使用呢,是先要把整张表的数据全部查出来,缓存的内存上,然后再做类似sql的查询么?就是直接查内存而不是查表这样么?

求大牛给点例子哦

回复内容:

最近在研究memcache和php配合小弟不知道该如何使用呢,是先要把整张表的数据全部查出来,缓存的内存上,然后再做类似sql的查询么?就是直接查内存而不是查表这样么?

求大牛给点例子哦

memcache 是 key => value 的方式,一个key 对应 一个 value 。

立即学习PHP免费学习笔记(深入)”;

memcache一般多用于存储大型能开销的数据,比如SQL结果集。将其序列化或者json_encode后存入memcache中,并命名为一个唯一的key值。下次则直接从memcached中获取该值。

图可丽批量抠图
图可丽批量抠图

用AI技术提高数据生产力,让美好事物更容易被发现

下载

注:经过测试serialize 后的string 存入memcached 比 json_encode后的string要快很多。 若直接将array存入memcached实际上memcached底层有将array进行 serialize(array); (我这里一直记错!!)

如下实例: 有数据table threads. 我们将其结果缓存起来。

// 首先进行查询memcached中threads_list是否为非空集合
$list = json_decode($memcached->get("threads_list"));
if(!$list){
    $query = $db->query("SELECT * FROM `threads` ");
    while($value = $db->fetch_array($query)){
         $list[] = $value;
    }
    //进行memcached插入
    //$memcached->set(键值,内容,失效时间);
    $memcached->set("threads_list",json_encode($list),86400);
}

print_r($list);

以上操作将有效的减少mysql查询的开销。 当然memcached并非仅局限于sql的存储。具体还需要看业务上的需求。

不过强烈推荐redis!!!!!

原理:将你 SQL 查询的结果缓存在 memcache 里,下次执行同样的查询就直接从缓存中读取,而不用查询数据库,缓解数据库压力。

connect('localhost','11211');

    //准备SQL语句
    $sql='SELECT * FROM user';

    //设置一个键名
    $key=md5($sql);
    $data=$mem->get($key);

    //第二次之后的查询
    if(!$data){
        try{
            //链接mysql 
            $dsn="mysql:host=localhost;dbname=bbs";
            $pdo=new PDO($dsn,'root','root');
            //设置字符集
            $pdo->exec('set names utf8');

            $stmt=$pdo->prepare($sql);
            $stmt->execute();
            $data=$stmt->fetchAll();
            //把数据存储到memcache中(第一次查询)
            $mem->add($key,$data);
        }catch(PDOException $e){
            echo $e->getMessage();
        }
    }

    $mem->close();

    print_r($data);

?>

刚录好的视频,讲Memcache的
近距离探索memcache

同样的查询条件,可能能来不一样的结果,这样缓存更新问题如何解决?

先查和后查看你怎么写代码。 如果你准备把整个表或者库都写进Memcached的呢,那就的把整个业务流程都数据, 也就是说每次查询都是查询Memcached,相当于是把Memcached当数据库运用。 如果只是简单的操作,http://segmentfault.com/q/1010000000257857#a-1020000000257889 已经说了。 其实Memcached这种key、value的存储,看你key怎么生成了,如果单机使用的话,用条件来生成就可以了,集群的话就看你怎么分key了。

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

php

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

2

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

2

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

0

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

29

2025.12.24

yandex外贸入口合集
yandex外贸入口合集

本专题汇总了yandex外贸入口地址,阅读下面的文章了解更多内容。

58

2025.12.24

添加脚注通用方法
添加脚注通用方法

本专题整合了添加脚注方法合集,阅读专题下面的文章了解更多内容。

1

2025.12.24

重启电脑教程汇总
重启电脑教程汇总

本专题整合了重启电脑操作教程,阅读下面的文章了解更多详细教程。

3

2025.12.24

纸张尺寸汇总
纸张尺寸汇总

本专题整合了纸张尺寸相关内容,阅读专题下面的文章了解更多内容。

5

2025.12.24

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 7.7万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号