热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpmysqlmemcached_PHPMemcached实现简单数据库缓存

Memcache常用方法Memcache::add—添加一个值,如果已经存在,则返回falseMemcache::addServer—添加一个可供使用的

Memcache常用方法

Memcache::add — 添加一个值,如果已经存在,则返回false

Memcache::addServer — 添加一个可供使用的服务器地址

Memcache::close — 关闭一个Memcache对象

Memcache::connect — 创建一个Memcache对象

Memcache::debug — 控制调试功能

Memcache::decrement — 对保存的某个key中的值进行减法操作

Memcache::delete — 删除一个key值

Memcache::flush — 清除所有缓存的数据

Memcache::get — 获取一个key值

Memcache::getExtendedStats — 获取进程池中所有进程的运行系统统计

Memcache::getServerStatus

— 获取运行服务器的参数

Memcache::getStats — 返回服务器的一些运行统计信息

Memcache::getVersion —

返回运行的Memcache的版本信息

Memcache::increment — 对保存的某个key中的值进行加法操作

Memcache::pconnect — 创建一个Memcache的持久连接对象

Memcache::replace —

R对一个已有的key进行覆写操作

Memcache::set — 添加一个值,如果已经存在,则覆写

Memcache::setCompressThreshold — 对大于某一大小的数据进行压缩

Memcache::setServerParams — 在运行时修改服务器的参数

下面是一段简单的测试代码,代码中对标识符为 'mykey' 的对象数据进行存取操作

require_once('memcached-client.php');//选项设置

$options = array('servers' => array('192.168.1.1:11211'), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务

'debug' => true, //是否打开 debug

'compress_threshold' => 10240, //超过多少字节的数据时进行压缩

'persistant' => false //是否使用持久连接

);//创建 memcached 对象实例

$mc = new memcached($options);//设置此脚本使用的唯一标识符

$key = 'mykey';//往 memcached 中写入对象

$mc->add($key, 'some random strings');$val = $mc->get($key);echo "n".str_pad('$mc->add() ', 60, '_')."n";var_dump($val);//替换已写入的对象数据值

$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));$val = $mc->get($key);echo "n".str_pad('$mc->replace() ', 60, '_')."n";var_dump($val);//删除 memcached 中的对象

$mc->delete($key);$val = $mc->get($key);echo "n".str_pad('$mc->delete() ', 60, '_')."n";var_dump($val);?>

实际应用中,通常会把数据库查询的结果集保存到 memcached 中,下次访问时直接从 memcached 中获取,而不再做数据库查询操作,这样可以在很大程度上减轻数据库的负担。通常会将 SQL 语句 md5() 之后的值作为唯一标识符 key。下边是一个利用 memcached 来缓存数据库查询结果集的示例

if ( !($datas = $mc->get($key)) ) {//在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。

echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";$conn = mysql_connect('localhost', 'test', 'test');mysql_select_db('test');$result = mysql_query($sql);while ($row = mysql_fetch_object($result))$datas[] = $row;//将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。

$mc->add($key, $datas);

}else{echo "n".str_pad('Read datas from memcached.', 60, '_')."n";

}var_dump($datas);?>

可以看出,使用 memcached 之后,可以减少数据库连接、查询操作,数据库负载下来了,脚本的运行速度也提高了。



推荐阅读
  • 由PHP转让Memcahce,首先,需要在server安装Memcache,如何安装Memcache这不是本文的重点,大约m ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • express工程中的json调用方法
    本文介绍了在express工程中如何调用json数据,包括建立app.js文件、创建数据接口以及获取全部数据和typeid为1的数据的方法。 ... [详细]
  • nosql数据库的基本要求Nosql全称是NotOnlySQL,是一种不同于关系型数据库的数据库管理系统设计方式。对NoSQL最普遍的解释是“非关系型的”,强调Key-ValueS ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • php yac缓存如何清理,yac和memcache性能对比测试
    yac是Laruence开发的一个php进程共享内存的开源项目。详情可以查看。http:www.laruence.com201303182846.htmlmemcache就不用多说 ... [详细]
  • yii框架目录结构详细分析说明
    php教程|php手册yii,目录结构php教程-php手册yii框架目录结构详细分析说明猫狗大战源码,华为云电脑ubuntu,梦见放走很多爬虫,parttmpphp,seo页面描 ... [详细]
  • php怎么使用艾特
    导读:很多朋友问到关于php怎么使用艾特的相关问题,本文编程笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!本文目录一览: ... [详细]
author-avatar
会飞的狼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有