任何东西,都有其适用的场景,在合适的场景下,才能发挥好更大的作用。

对于memcached,使用内存来存取数据,一般情况下,速度比直接从数据库和文件系统读取要快的多。

memcached的最常用的场景就是利用其“读取快”来白虎数据库,防止频率读取数据库,也有的项目中,;利用其“存储快”的特点来实现主从数据库的消息同步

1.缓存数据库的查询结果:

通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性

伪代码及效果如下:

  1. <?php
  2. $sql='select goods_id,goods_name from ecs_goods where is_hot=1 limit 5';
  3. //判断memcached中是否缓存热门商品,如果没有,则查询数据库
  4. $hot=array();
  5. if(!($hot=$memcache->get($sql))){
  6. $hot=$mysql->getAll($sql);
  7. echo'<fontcolor="red">查询自数据库</font>';
  8. //从数据库取得数据后,把数据写入memcached
  9. $memcache->add($sql,$hot,,);//并设置有效期300秒
  10. }else{
  11. echo'<fontcolor="red">查询自memcached</font>';
  12. }
  13. ?>

2.中继MySQL主从延迟数据:

MySQL在做replication的时候,主从复制之间必然姚经理一个复制过程,即主从延迟的时间。

尤其是主从服务器处于异地机房的时候,这种情况更加的明显。

以我们 的情况为例:公司内部小机房的数据需要同步到北显机房,那数据量特别大的时候,主从的延时能达到1个多小时,那幸好数据的要求并没有那么的实时,但我们可以采用如下的方法,先考虑一个场景:

  1. ①: 用户U购买电子书B,insert into Master(U,B);
  2. ②: 用户U观看电子书B,select 购买记录[user=’A’,book=’B’] from Slave.
  3. ③: 由于主从延迟,第②步中无记录,用户无权观看该书.
  4.  
  5. 这时,可以利用memachedmasterslave之间做过渡
  6.  
  7. ①: 用户U购买电子书B,memcached->add(‘U:B’,true)
  8.  
  9. ②: 主数据库insert into Master(U,B);
  10.  
  11. ③: 用户U观看电子书B,select 购买记录[user=’U’,book=’B’] from Slave.
  12. 如果没查询到,则memcached->get(‘U:B’),查到则说明已购买但Slave延迟.
  13.  
  14. ④: 由于主从延迟,第②步中无记录,用户无权观看该书.

MC的一些具体的应用的例子的总结的更多相关文章

  1. SQL函数说明大全

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

  2. T-SQL函数总结

    T-SQL函数的类别和描述. 函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如COUNT.SUM.MIN 和 MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 ...

  3. sqlserver函数大全

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

  4. SQL server函数大全

    函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如 COUNT.SUM.MIN 和MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 将值从一种数据类型转换为另一种 ...

  5. SQL SERVER 函数大全[转]

    SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...

  6. SQL函数说明大全 (转)

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

  7. sql函数(转)

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

  8. SQL函数介绍

    http://www.cnblogs.com/moss_tan_jun/archive/2010/08/23/1806861.html 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用 ...

  9. [转] SQL函数说明大全

    from http://www.cnblogs.com/moss_tan_jun/archive/2010/08/23/1806861.html 一旦成功地从表中检索出数据,就需要进一步操纵这些数据, ...

随机推荐

  1. 浅谈C#中的接口和抽象类

    C#中接口为"其他方面互不相干"的类型提供公共的服务和特征:C#中class只支持但继承,使用接口却支持多继承,例如:C#中System.String是从System空间中的4个i ...

  2. js动态添加onload、onresize、onscroll事件(另类方法)

    js动态添加onload.onresize.onscroll事件(另类方法)   window 的 onload.onresize.onscroll 事件,跟其他的事件不一样,它不能用 attachE ...

  3. mac地址泛洪攻击的实验报告

    案例介绍: PC A 访问 本网络的一台FTPserver主机,中间人进行arp的投毒,获取PC-A和FTPserve之间的回话记录,截获用户名和密码. 实验拓扑:

  4. Python 调用百度翻译API

    由于实习公司这边做的是日文app,有时要看看用户反馈,对于我这种五十音图都没记住的人,表示百度翻译确实还可以.但不想每次都复制粘贴啊,google被墙也是挺蛋疼的事,所以用python结合baidu ...

  5. Socket编程基础——无连接UDP

    与面向连接的网络连接相比,无连接的网络通信不需要在服务器与客户端之间建立连接.面向非连接的Socket通信是基于UDP的,服务器端不需要调用listen()和accept()函数来等待客户端的连接:客 ...

  6. H5版俄罗斯方块(2)---游戏的基本框架和实现

    前言: 上文中谈到了H5版俄罗斯方块的需求和目标, 这次要实现一个可玩的版本. 但饭要一口一口吃, 很多东西并非一蹴而就. 本文将简单实现一个可玩的俄罗斯方块版本. 下一步会引入AI, 最终采用coc ...

  7. Couldn't open file on client side, trying server side 错误解决

    09-09 09:43:21.651: D/MediaPlayer(3340): Couldn't open file on client side, trying server side09-09 ...

  8. poj1458 Common Subsequence ——最长公共子序列

    link:http://poj.org/problem?id=1458 最基础的那种 #include <iostream> #include <cstdio> #includ ...

  9. Spring mvc创建的web项目,如何获知其web的项目名称,访问具体的链接地址?

    Spring mvc创建的web项目,如何获知其web的项目名称,访问具体的链接地址? 访问URL:  http://localhost:8090/firstapp/login 在eclipse集成的 ...

  10. phoenix创建二级索引

    create table user (id varchar primary key, firstname varchar, lastname varchar); create index user_i ...