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);
时间: 2024-10-12 12:07:15

php使用memcached加速小结的相关文章

使用memcached加速web应用实例

在实际应用中,一般会把数据库查询的结果保存到memcached中,下次訪问数据库时直接从memcached中获取.而不再进行数据库操作,这样非常大的程度上减轻了数据库的负担. [演示样例]: <span style="font-family:Microsoft YaHei;"><? $mc = new Memcache(); //创建memcache对象 $mc ->connect('127.0.0.1',11211); $sql = "select

PHP核心技术与最佳实践

<PHP核心技术与最佳实践>是一本致力于为希望成为中高级PHP程序员的读者提供高效而有针对性指导的经典著作.系统归纳和深刻解读了PHP开发中的编程思想.底层原理.核心技术.开发技巧.编码规范和最佳实践.全书分为5个部分:第一部分(1-2章)从不同的角度阐述了面向对象软件设计思想的核心概念.技术和原则,分析了面向对象的特性.设计模式的理念,指出了如何设计低耦合.高可扩展性的软件,等等:第二部分(3-6章)详细讲解了PHP中正则表达式的规范和使用技巧,PHP网络编程的原理.方法.技巧和一些重要的操

LNMMP架构实现Web动静分离

前言 前面的文章中说过LAMP架构包括:Linux操作系统,Apache网站服务器,MySQL数据库,Perl.PHP或者Python编程语言,而今天要说的LNMMP 和LAMP类似,只是作为Web服务器的不再是Apache而是高性能的Nginx,同时引进Memcached加速缓存效率,用于加快访问速度. Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对数据库的访问来加速Web应用程序.它是一个基于内存的"键值对"存储,用于

WDCP,LNMP安装PHP缓存加速扩展eAccelerator,xcache和memcached

VPS主机性能配置如果太差,则在运行Wordpress博客和Discuz! 论坛等高消耗程序时能够明显感觉出VPS有些吃力.另外,即使VPS主机的CPU.内存.硬盘I/O等性能足够好,但是在面对大流量时则有可能导致PHP执行效率降低,网页打开速度变慢等不正常的情况. 为了能够在低配置的VPS主机上Web也能跑出流畅的感觉和在面对流量高峰时服务器也能从容应对大量的应该访问请求,我们一般会给PHP安装上几点缓存加速扩展:eAccelerator,xcache和memcached,优化动态内容缓存,提

使用Memcached Provider客户端的increment()||decrement()操作小结

使用Memcached Provider客户端对increment||decrement()操作小结: 1.store时只有以string类型存放int数字,才能正常increment.decrement,否则(increment\decrement)返回-1. 失败: this.cache.Add("num1", 100);//这里应该传入string. long newNum = this.cache.Increment("num1", 1);//失败,返回-1

加速与缓存技术之Memcached

Memcached Memcached是一款开源.高性能.分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对 Database的访问来加速web应用程序.它是一个基于内存的"键值对"存储,用于存储数据库调用.API调用或页面引用结果的直接数据,如字符串.对象等. Memcached是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件.现在已成为mixi.hatena.Facebook.Vox.L

Memcached构建缓存加速集群部署

前言: Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. Centos6.5最下化安装系统(Redhat6/Centos6系列) 实验环境:magent1:192.168.1.1   magen

memcached小结--【项目经验】

为什么要用memcached? 每个技术的出现必然有它出现的原因,为啥要用memcached?查了一下网上的资料,了解到Memcache的出现解决了数据库高并发访问的瓶颈.当数据架构建立在单数据库模式,数据库连接池峰值达500,程序离崩溃就不远了.有的小网站开发的时候没有关注性能,等用户访问量越来越大,程序很容易崩溃. 如果客户端发送一个请求,服务端从数据库中存取相关数据,花费高昂.如果每次都从数据库取相同的数据,造成了数据库低效.然而如果把第一次取出的数据都存入到内存中,下次读取直接从内存中获

Memcached 小结

memcached 分布式内存对象缓存系统: 内存缓存:把所取对象或数据缓存在内存中:内存中缓存的这些数据通过API的方式被存取: 数据就像是一张HASH表,以key-value对的方式存在. 用来减轻数据库的压力,提高网站的响应速度,构建快速可扩展的web应用. 内置内存管理方式:使用LUR自动删除不使用的存储,重用过期数据的内存空间. 所以重启机器之后缓存数据会丢失. 下载依赖 libevent 也可以 yum安装 # yum install libevent 源码 # https://gi