/**

* 工厂方法模式

* -------------

* @author zhangqian

* @version v1.0

*/

//缓存接口

interface cache {

public function init($conf);

public function setVal($key , $val);

public function getVal($key);

public function delVal($key);

public function autoIncreament($key);

}

//mem

class mymemCache implements cache {

//mymem连接

public function init($conf)

{

echo '初始化mymem';

}

public function setVal($key , $val)

{

echo 'mem设置值';

}

public function getVal($key)

{

echo 'mem获取值';

}

public function delVal($key)

{

echo 'mem删除值';

}

public function autoIncreament($key)

{

echo 'mem自增';

}

}

//redis

class redisCache implements cache {

//redis连接

public function init($arr)

{

echo '初始化redis';

}

public function setVal($key , $val)

{

echo 'redis设置值';

}

public function getVal($key)

{

echo 'redis获取值';

}

public function delVal($key)

{

echo 'redis删除值';

}

public function autoIncreament($key)

{

echo 'redis自增';

}

}

class cacheFactory

{

private static $obj;

private static $type;

private static $conf;

private static $allowtype = array('mymem','redis');

private static function getConfig()

{

//include_once('config.php');加载配置文件 获取缓存的类型 及缓存的配置参数

global $_SC;

self::$type = $_SC['cachetype'];//做空值的判断

self::$conf = $_SC['cacheconf'];//做空值的判断

}

//外部调用创建缓存对象

public static function CreateOperation(){

self::getConfig();

try

{

$error = '未知的缓存类型';

if(in_array(self::$type , self::$allowtype))

{

$type = self::$type.'Cache';

self::$obj = new $type;

self::$obj->init(self::$conf);//连接

}

else

throw new Exception($error);

}

catch (Exception $e) {

echo 'Caught exception: ', $e->getMessage(), "\n";

exit;

}

return self::$obj;

}

}

$_SC = array();

$_SC['cachetype'] = 'redis';//mymem

$_SC['cacheconf'] = array();

$cache = cacheFactory::CreateOperation();

$cache->setVal('a',1);

echo '

';

$a = $cache->getVal('a');

echo '

';

$cache->delVal('a');

?>

php 接口缓存,php写的一个缓存接口demo,兼容redis和memcache相关推荐

  1. 写出一个缓存系统的伪代码001

    /*** 写出一个缓存系统的伪代码*/ public class CacheDemo {private Map<String, Object> map = new HashMap<S ...

  2. cocos2d-xna 写的一个小游戏demo坦克大战

    最近看到网上介绍cocos2d的资料很多,看了看cocos2d也支持wp7,下载了个 Cocos2d-XNA 安装包,写个小例子玩玩,熟悉下cocos2d 程序很简单,就一个入门级的小游戏,写完后放手 ...

  3. python 登录接口_使用python编写一个登录接口

    需求: 编写登录接口 输入用户名密码 认证成功后 显示欢迎信息 输入三次后锁定 用户信息文件 黑名单的文件 黑名单里检查,不让登录 用户名密码判定 流程图: 代码:#!/usr/bin/env pyt ...

  4. python编写登录接口_使用python编写一个登录接口

    需求: 编写登录接口 输入用户名密码 认证成功后 显示欢迎信息 输入三次后锁定 用户信息文件 黑名单的文件 黑名单里检查,不让登录 用户名密码判定 流程图: 代码:#!/usr/bin/env pyt ...

  5. REDIS13_缓存雪崩、缓存穿透、基于布隆过滤器解决缓存穿透的问题、缓存击穿、基于缓存击穿工作实际案例

    文章目录 ①. 缓存雪崩 ②. 缓存穿透 ③. 在centos7下布隆过滤器2种安装方式 ④. 缓存击穿 ⑤. 高并发的淘宝聚划算案例落地 ①. 缓存雪崩 ①. 问题的产生:缓存雪崩是指缓存数据大批量 ...

  6. CDN缓存系统——varnish之清除缓存

    目录 一.varnish进程的工作模式 二.缓存 三.手动清理缓存 四.图形化清理缓存 1.安装bansys安装包(帮助清除varnish内存) 2.修改apache使用的端口 3.修改varnish ...

  7. android 观察者模式的简单demo,一个简单的demo彻底搞懂观察者模式

    介绍 观察者模式也被称为发布-订阅(Publish/Subscribe)模式,它属于行为型模式的一种.观察者模式定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听.当这个主题对象状态变 ...

  8. 所有接口分类 作用详解 物理接口 管理接口 业务接口 逻辑接口

    目录 接口分类 物理接口 管理接口 业务接口 逻辑接口 接口分类 接口是设备与网络中的其它设备交换数据并相互作用的部件,分为物理接口和逻辑接口两类,其中: 物理接口 物理接口是真实存在.有器件支持的接 ...

  9. WebApi接口 - 如何在应用中调用webapi接口

    » 简单做个webapi(查询+添加)接口 首先,我们需要有一个webapi接口项目,我这里以前面WebApi接口 - 响应输出xml和json文章的项目来构建本篇文章的测试用例:这里新建一个 DbD ...

最新文章

  1. 【ASP.NET Web API教程】2.3.3 创建Admin控制器
  2. 转: jdbc连接数据库需要注意和出错的地方
  3. 做不背锅的运维(文末有彩蛋!)
  4. c#操作word表格
  5. 语言木头折断放置问题_木头文化:干燥,是木成材的关键一步
  6. python入门第六章 信息安全策略-文件备份 用户账户管理
  7. C语言小知识---printf()函数转换符的意义
  8. 一种基于地图导航的语音识别管理系统的制作方法
  9. Prism4翻译笔记(二)第二章:初始化Prism应用程序
  10. Flask 下载中文名文件
  11. iPhone照片备份与恢复
  12. xp无法访问win7计算机,xp系统访问win7共享文件夹提示无权限如何解决
  13. 如何使用Github实现协同工作(例子:两人合作写代码)
  14. matlab char 转asc码,科学网—C语言与MATLAB对二进制文件与ASCII文件转换 - 张凌的博文...
  15. 小白看了也会选:数据分析的常见工具有哪些
  16. 【21.00%】【vijos P1018】智破连环阵
  17. Java生成纳秒时间戳
  18. 前端百题斩【006】——js中三类字符串转数字的方式
  19. 【Linux vim 入门及渐进过程2 - vim 常用插件配置】
  20. 腾讯云、阿里云都“服”了,云容灾你还迟疑什么?

热门文章

  1. js (javascript) 中获取年月日信息
  2. ice 服务java连接,“先进的互联互通技术”–使用ice联通php和java [part 1 server]
  3. android模拟器无法拍照,为什么dafault相机无法在android模拟器中工作?
  4. php如何避免时间重复,如何避免/停止php和html的重复插入?
  5. 这是不是帮女朋友拍照时的你?哈哈哈哈
  6. 千万别让男朋友穿你的短裙......
  7. 20个天才般的走心设计,真是太牛了!
  8. 为什么老师批改完试卷,分数下要画两条横线?今天终于知道了!
  9. 如果有人问你什么是大数据?不妨说说这10个典型的大数据案例
  10. 《销售总监》读书笔记