MemCache的实例应用

一、最常见的MemCache应用

       1、缓存从数据库中查询的数据结果;

2、保存会话控制信息。

二、案例

1、缓存从数据库中查询的数据结果

将数据库查询出来的结果使用memcached服务器进行缓存,以减少频繁的数据库连接以及大量的查询对数据库造成的压力。

设计原则:

(1)、只要数据库中的记录没有改变,就不需要重新连接数据库并反复执行重复的查询语句;

(2)、相同的查询结果都应该从缓存服务器中获取。

  1. <?php
  2. /** 该函数用于执行有结果集的SQL语句,并将结果缓存到memcached服务器中
  3. @param string $sql 有结果集的查询语句SQL
  4. @param object $memcache Memcache类的对象
  5. @return $data 返回结果集的数据 */
  6. function select($sql, Memcache $memcache){
  7. /* md5 SQL命令 作为 memcache的唯一标识符*/
  8. $key = md5($sql);
  9. /* 先从memcached服务器中获取数据 */
  10. $data = $memcache->get($key);
  11. /* 如果$data为false那么就是没有数据, 那么就需要从数据库中获取 */
  12. if(!$data) {
  13. try{ //很有必要将连接数据库的过程单独处理
  14. $pdo = new PDO("mysql:host=localhost;dbname=dbtest", "mysql_user", "mysql_pass");
  15. }catch(PDOException $e){
  16. die("连接失败:".$e->getMessage());
  17. }
  18. $stmt = $pdo->prepare($sql);
  19. $stmt->execute();
  20. /* 从数据库中获取数据,返回二维数组$data */
  21. $data = $stmt->fetchAll(PDO::FETCH_ASSOC);
  22. /* 这里向memcached服务器写入从数据库中获取的数据*/
  23. $memcache -> add($key, $data, MEMCACHE_COMPRESSED, 0);
  24. }
  25. return $data;
  26. }
  27. $memcache = new Memcache;
  28. /* 可以使用addServer()方法添加多台memcached服务器 */
  29. $memcache -> connect(‘localhost‘, 11211);
  30. /* 第一次运行还没有缓存数据, 会读取一次数据库, 当再次访问程序时, 就直接从memcache获取*/
  31. $data = select("SELECT * FROM user", $memcache);
  32. var_dump($data); //输出数据

来自为知笔记(Wiz)

时间: 2024-12-23 14:08:25

MemCache的实例应用的相关文章

九爷带你了解 深入理解 Memcache 原理

深入理解Memcache原理 1.为什么要使用memcache 由于网站的高并发读写需求,传统的关系型数据库开始出现瓶颈,例如: 1)对数据库的高并发读写: 关系型数据库本身就是个庞然大物,处理过程非常耗时(如解析SQL语句,事务处理等).如果对关系型数据库进行高并发读写(每秒上万次的访问),那么它是无法承受的. 2)对海量数据的处理: 对于大型的SNS网站,每天有上千万次的苏剧产生(如twitter, 新浪微博).对于关系型数据库,如果在一个有上亿条数据的数据表种查找某条记录,效率将非常低.

深入理解Memcache原理 [转]

1.为什么要使用memcache 由于网站的高并发读写需求,传统的关系型数据库开始出现瓶颈,例如: 1)对数据库的高并发读写: 关系型数据库本身就是个庞然大物,处理过程非常耗时(如解析SQL语句,事务处理等).如果对关系型数据库进行高并发读写(每秒上万次的访问),那么它是无法承受的. 2)对海量数据的处理: 对于大型的SNS网站,每天有上千万次的数据产生(如twitter, 新浪微博).对于关系型数据库,如果在一个有上亿条数据的数据表种查找某条记录,效率将非常低. 使用memcache能很好的解

《PHP框架Yii学习》系列技术文章整理收藏

<PHP框架Yii学习>系列技术文章整理收藏 1Yii Framework框架获取分类下面的所有子类方法 2YII模块实现绑定二级域名的方法 3Yii框架官方指南系列43——专题:URL(创建.路由.美化及自定义) 4Yii入门教程之目录结构.入口文件及路由设置 5Yii核心组件AssetManager原理分析 6Yii使用ajax验证显示错误messagebox的解决方法 7Yii框架中memcache用法实例 8Yii中CGridView关联表搜索排序方法实例详解 9yii实现CheckB

深入理解Memcached原理

1.为什么要使用memcache 由于网站的高并发读写需求,传统的关系型数据库开始出现瓶颈,例如: 1)对数据库的高并发读写: 关系型数据库本身就是个庞然大物,处理过程非常耗时(如解析SQL语句,事务处理等).如果对关系型数据库进行高并发读写(每秒上万次的访问),那么它是无法承受的. 2)对海量数据的处理: 对于大型的SNS网站,每天有上千万次的数据产生(如twitter, 新浪微博).对于关系型数据库,如果在一个有上亿条数据的数据表种查找某条记录,效率将非常低. 使用memcache能很好的解

ShopNC学习笔记四:缓存设计

系统可以对数据进行多种形式缓存,包括文件方式.共享内存方式和数据库方式.目前已支持的缓存方式包括:file.apc .eAccelerator .memcache 和 xcache,开发者也可以开发更加适合自己的缓存. 系统由Cache缓存类进行缓存操作,由Cache::getInstance方法完成缓存类型实例化: //取得memcache缓存实例 $obj_cache = Cache::getInstance('memcache'); //缓存赋值 $obj_cache->set('uid'

Laravel的Ioc设计

云智慧(北京)科技有限公司 一.IoC的概念介绍 控制反转(IOC)模式(又称DI:DependencyInjection)就是Inversion ofControl,控制反转.在Java开发中,IoC意 味着将你设计好的类交给系统去控制,而不是在你的类内部控制.这称为控制反转. IoC(Inversion of Control)是近年来兴起的一种思想,不仅仅是编程思想.主要是协调各组件间相互的依赖关系,同时大大提高了组件的可移植性,组件的重用机会也变得更多.在传统的实现中,由程序内部代码来控制

Python自动化开发学习-Memcached

讲师的博客:https://www.cnblogs.com/wupeiqi/p/5132791.html如果是要在django里使用Memcache缓存,那么下面都不用看了,直接看django里是怎么用的就好了.这篇里缓存的章节:http://blog.51cto.com/steed/2104127 Memcached Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度

ZABBIX监控一台服务器上多实例memcache落地经验步骤

大家好!我是系统运维工程师: 李超  上一次给大家分享了工作中监控多实例tomcat的自发现zabbix做法,今天带给大家的就是一台服务器上监控多memcache的一个落地经验. 首先我带大家看一下多实例memcache做法,话不多说,咱们开工: 由于是多实例,所以就需要用到zabbix的自动发现功能(LLD)基本思路如下: 1.写自动发现脚本. 2.写状态取值脚本. 3.添加配置文件. 4.添加权限. 5.配置zabbix web. zabbix我采用yum安装所以路径是/etc/zabbix

PHP memcache实现消息队列实例

现在,memcache于server缓存广泛应用.下面我来介绍一下memcache消息队列中等待的样本实现,有需要了解的朋友可以参考. memche消息队列原则key上做文章.后消息或者日志. 然后通过定时程序将内容落地到文件或者数据库. php实现消息队列的用处比方在做发送邮件时发送大量邮件非常费时间的问题.那么能够採取队列. 方便实现队列的轻量级队列server是: starling支持memcache协议的轻量级持久化server https://github.com/starling/s