PS:原创文章,如需转载,请注明出处,谢谢!
本文地址: http://flyer0126.iteye.com/blog/1751973
前两天写了 memcached读书笔记一 ,偏重于理论,今天有时间主要是PHP中对Memcache的使用,闲话少叙,进入正题~
PHP中的简单应用:
<?php // 简单测试memcached $mc = new Memcache; $mc->connect('127.0.0.1', 11211); $key = ''; $mc->set('key', 'flyer0126'); $ret = $mc->get('key'); print_r($ret); //输出信息: flyer0126
为了更好的调用,在此封装一下:
<?php /** * 单例模式构造Memcache 操作类 * @author flyer0126 * @since 2012/12 */ class mem_cache extends Memcache { static $instance = NULL; private $mem_cache_servers = "127.0.0.1:11211"; // 设置cache的host及port信息 private $prefix = 'flyer0126_'; // 设置key的前缀 public $is_cache = true; // 设置是否使用cache数据 /** * 获取对象实例 * @return [type] [description] */ static function get_instance() { if (self::$instance == NULL) { self::$instance = new mem_cache(); } return self::$instance; } /** * 构造函数私有化,防止外界调用 */ private function __construct() { if (strpos(',', $this->mem_cache_servers)) { $memcached_servers = explode(',', $this->mem_cache_servers); }else{ $memcached_servers = array($this->mem_cache_servers); } // 向连接池中添加memcache服务器 foreach ($memcached_servers as $key => $value) { list($server, $port) = explode(':', $value); parent::addServer ($server, $port, false); } } /** * 根据key获取cache值 * @param [type] $key [description] * @return [type] [description] */ function get($key) { if (!$this->is_cache || !strlen($key)) { return false; } $key = $this->hash($key); return parent::get($key); } /** * 设置cache值 * @param [type] $key [description] * @param [type] $value [description] * @param integer $flag [description] * @param integer $expire [description] */ function set($key, $value, $flag=0, $expire=0) { if (!strlen($key)) { return false; } $key = $this->hash($key); return parent::set($key, $value, $flag, $expire); } /** * 对key进行md5加密 * @param [type] $key [description] * @return [type] [description] */ function hash($key) { return md5($this->prefix.$key); } /** * 删除对应key的cache值 * @param [type] $key [description] * @return [type] [description] */ function delete($key) { if (!strlen($key)) { return false; } $key = $this->hash($key); return parent::delete($key); } /** * 删除对应数组key的cache值 * @param [type] $key_ary [description] * @return [type] [description] */ function delete_ary($key_ary) { if (!is_array($key_ary)) { return false; } foreach ($key_ary as $item) { $this->delete($item); } return true; } }
测试一下:
<?php // 测试例子 $mc = mem_cache::get_instance(); $mc->set('key', 'flyer0126'); $ret = $mc->get('key'); var_dump($ret); // string(9) "flyer0126" $mc->is_cache = false; $ret1 = $mc->get('key'); var_dump($ret1); // bool(false) $mc->is_cache = true; $ret2 = $mc->get('key'); var_dump($ret2); // string(9) "flyer0126" $mc->delete('key'); $ret2 = $mc->get('key'); var_dump($ret2); // bool(false)
Memcache 在PHP中应用更多的是存储数据库查询结果,原理是一致的,在此就不再赘述了~
相关推荐
2. "memcached权威指南.pdf":这是一份全面介绍Memcached的参考资料,可能包括了Memcached的工作原理、配置选项、API接口、性能调优、故障排查等方面的内容,适合初学者和进阶用户阅读。 3. ...
#### 二、安装与配置 ##### 安装过程 - **依赖库**:Memcached依赖于`libevent`库进行事件处理,因此在安装Memcached前需确保已安装`libevent`。 - **下载与编译**:可以通过官方站点下载最新版本的Memcached源码包...
**Memcached笔记** Memcached是一种高性能的分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。本文将深入探讨Memcached的基础知识、工作原理、安装与配置,以及如何在...
memcached原始码阅读笔记阅读memcached最好有libevent基础,memcached是基于libevent构建起来的。通由libevent提供的事件驱动机制触发memcached中的IO事件。已经有大牛剖析过libevent源码了,推荐阅读:个人认为,...
Redis,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。...本文适合Redis初学者和进阶者阅读,是一份全面而实用的学习笔记。
**Zend Framework 阅读笔记** Zend Framework 是一个开源、基于组件的PHP开发框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提高Web应用的开发效率和可维护性。本笔记将深入探讨Zend Framework的核心概念、...
SSM(Spring、SpringMVC、Mybatis)框架是Java Web开发中常用的一种组合,它在提高开发...在阅读和实践这个"SSM笔记-缓存"的过程中,你将能够全面了解Mybatis缓存的各个方面,并具备在实际项目中运用这些知识的能力。
很抱歉,由于无法直接访问或解析链接内容,我无法提供具体的《乔杉架构笔记 Java工程师面试突击》中的详细知识点。但作为一个专业的IT行业大师,我可以...如果你能获取并阅读这份笔记,相信会对你的面试准备大有帮助。
Redis,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。...本文适合Redis初学者和进阶者阅读,是一份全面而实用的学习笔记。
以下将对这份笔记中的核心知识点进行详细阐述。 1. PHP基础:PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。笔记首先会介绍PHP的基本语法,包括变量、数据类型、常量、...
在处理大规模流量时,传统的单一数据库往往无法满足需求,因此,分布式数据库和缓存(如Redis或Memcached)的使用是常见的解决方案。这部分会涉及数据分片、主从复制、读写分离等技术,以及如何优化数据库查询性能,...
1. Markdown是轻量级的文本标记语言,Redis.md文件采用此格式记录笔记,易于编写和阅读。 2. Typora是一款现代的Markdown编辑器,支持直接预览和编辑Markdown文件,能直接导入Redis.assets中的图片资源,增强笔记的...
6. **阅读体验**:为了提供良好的阅读体验,源码可能实现了自适应布局、夜间模式、字体调整、书签、笔记等功能。CSS3和JavaScript的运用在此环节尤为重要。 7. **安全性**:在开发过程中,安全措施不能忽视,包括...
在“Java-Summarize-code”这个压缩包中,可能包含了对以上知识点的代码示例和学习笔记,通过阅读和实践,可以进一步巩固和深化Java核心技术的理解。无论是初学者还是经验丰富的开发者,持续学习和实践这些知识点都...
这个压缩包包含了一本PDF文档,可能是讲座笔记或者报告,以及一个名为"UhR8x728IOQQHzmP8fTct0QzaBN9QL51"的未知文件,可能是相关的附件或数据。 eBay架构的核心在于其强大的可扩展性和高可用性,以应对海量用户和...
1. **df06b27da95de139cda68ead77ac7d98.txt**:这可能是一个日志文件或文档,其内容可能包含了安装指南、更新日志或开发者笔记,帮助用户理解mechedit的使用和开发过程。 2. **fileinfo.txt**:通常,这种文件用于...
PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发,可以嵌入到HTML中使用。...通过深入阅读和实践,你可以巩固理论知识,提升实际开发能力。
要完全理解和复现这个项目,需要阅读论文和任务书以获取项目背景和目标,通过db.sql了解数据库结构,参考readme文件进行项目构建和运行,同时深入研究源代码以理解具体实现细节。对于前端部分,可能需要查看其他未列...