`

memcached读书笔记二

阅读更多

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中应用更多的是存储数据库查询结果,原理是一致的,在此就不再赘述了~

分享到:
评论

相关推荐

    memcached-笔记资料

    2. "memcached权威指南.pdf":这是一份全面介绍Memcached的参考资料,可能包括了Memcached的工作原理、配置选项、API接口、性能调优、故障排查等方面的内容,适合初学者和进阶用户阅读。 3. ...

    Memcached源码剖析笔记

    #### 二、安装与配置 ##### 安装过程 - **依赖库**:Memcached依赖于`libevent`库进行事件处理,因此在安装Memcached前需确保已安装`libevent`。 - **下载与编译**:可以通过官方站点下载最新版本的Memcached源码包...

    memcached笔记

    **Memcached笔记** Memcached是一种高性能的分布式内存对象缓存系统,它被广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。本文将深入探讨Memcached的基础知识、工作原理、安装与配置,以及如何在...

    decode-memcached:memcached原始码剖析注释

    memcached原始码阅读笔记阅读memcached最好有libevent基础,memcached是基于libevent构建起来的。通由libevent提供的事件驱动机制触发memcached中的IO事件。已经有大牛剖析过libevent源码了,推荐阅读:个人认为,...

    Redis全套学习笔记 (带章节目录) 完整版pdf

    Redis,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。...本文适合Redis初学者和进阶者阅读,是一份全面而实用的学习笔记。

    zend frame work阅读笔记

    **Zend Framework 阅读笔记** Zend Framework 是一个开源、基于组件的PHP开发框架,它遵循模型-视图-控制器(MVC)架构模式,旨在提高Web应用的开发效率和可维护性。本笔记将深入探讨Zend Framework的核心概念、...

    SSM笔记-缓存

    SSM(Spring、SpringMVC、Mybatis)框架是Java Web开发中常用的一种组合,它在提高开发...在阅读和实践这个"SSM笔记-缓存"的过程中,你将能够全面了解Mybatis缓存的各个方面,并具备在实际项目中运用这些知识的能力。

    乔杉架构笔记 Java工程师面试突击

    很抱歉,由于无法直接访问或解析链接内容,我无法提供具体的《乔杉架构笔记 Java工程师面试突击》中的详细知识点。但作为一个专业的IT行业大师,我可以...如果你能获取并阅读这份笔记,相信会对你的面试准备大有帮助。

    Redis全套学习笔记(带章节目录)完整版pdf最新版本

    Redis,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。...本文适合Redis初学者和进阶者阅读,是一份全面而实用的学习笔记。

    韩顺平php入门到精通笔记

    以下将对这份笔记中的核心知识点进行详细阐述。 1. PHP基础:PHP(Hypertext Preprocessor)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发。笔记首先会介绍PHP的基本语法,包括变量、数据类型、常量、...

    亿级流量课程笔记压缩包

    在处理大规模流量时,传统的单一数据库往往无法满足需求,因此,分布式数据库和缓存(如Redis或Memcached)的使用是常见的解决方案。这部分会涉及数据分片、主从复制、读写分离等技术,以及如何优化数据库查询性能,...

    B站【编程不良人】Redis学习笔记

    1. Markdown是轻量级的文本标记语言,Redis.md文件采用此格式记录笔记,易于编写和阅读。 2. Typora是一款现代的Markdown编辑器,支持直接预览和编辑Markdown文件,能直接导入Redis.assets中的图片资源,增强笔记的...

    J阅读学习书籍在线微信阅读程序源码.zip

    6. **阅读体验**:为了提供良好的阅读体验,源码可能实现了自适应布局、夜间模式、字体调整、书签、笔记等功能。CSS3和JavaScript的运用在此环节尤为重要。 7. **安全性**:在开发过程中,安全措施不能忽视,包括...

    Java核心知识点记录学习

    在“Java-Summarize-code”这个压缩包中,可能包含了对以上知识点的代码示例和学习笔记,通过阅读和实践,可以进一步巩固和深化Java核心技术的理解。无论是初学者还是经验丰富的开发者,持续学习和实践这些知识点都...

    国外技术干货:eBay Architecture(Tony Ng) 2011- Tony NG.zip

    这个压缩包包含了一本PDF文档,可能是讲座笔记或者报告,以及一个名为"UhR8x728IOQQHzmP8fTct0QzaBN9QL51"的未知文件,可能是相关的附件或数据。 eBay架构的核心在于其强大的可扩展性和高可用性,以应对海量用户和...

    up_957889_mechedit_kyhlr.rar

    1. **df06b27da95de139cda68ead77ac7d98.txt**:这可能是一个日志文件或文档,其内容可能包含了安装指南、更新日志或开发者笔记,帮助用户理解mechedit的使用和开发过程。 2. **fileinfo.txt**:通常,这种文件用于...

    PHP学习资料--php

    PHP(Hypertext Preprocessor,超文本预处理器)是一种广泛使用的开源服务器端脚本语言,尤其适用于Web开发,可以嵌入到HTML中使用。...通过深入阅读和实践,你可以巩固理论知识,提升实际开发能力。

    springboot034在线商城系统设计与开发-代码.zip

    要完全理解和复现这个项目,需要阅读论文和任务书以获取项目背景和目标,通过db.sql了解数据库结构,参考readme文件进行项目构建和运行,同时深入研究源代码以理解具体实现细节。对于前端部分,可能需要查看其他未列...

Global site tag (gtag.js) - Google Analytics