php 接口缓存,php写的一个缓存接口demo,兼容redis和memcache
/**
* 工厂方法模式
* -------------
* @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相关推荐
- 写出一个缓存系统的伪代码001
/*** 写出一个缓存系统的伪代码*/ public class CacheDemo {private Map<String, Object> map = new HashMap<S ...
- cocos2d-xna 写的一个小游戏demo坦克大战
最近看到网上介绍cocos2d的资料很多,看了看cocos2d也支持wp7,下载了个 Cocos2d-XNA 安装包,写个小例子玩玩,熟悉下cocos2d 程序很简单,就一个入门级的小游戏,写完后放手 ...
- python 登录接口_使用python编写一个登录接口
需求: 编写登录接口 输入用户名密码 认证成功后 显示欢迎信息 输入三次后锁定 用户信息文件 黑名单的文件 黑名单里检查,不让登录 用户名密码判定 流程图: 代码:#!/usr/bin/env pyt ...
- python编写登录接口_使用python编写一个登录接口
需求: 编写登录接口 输入用户名密码 认证成功后 显示欢迎信息 输入三次后锁定 用户信息文件 黑名单的文件 黑名单里检查,不让登录 用户名密码判定 流程图: 代码:#!/usr/bin/env pyt ...
- REDIS13_缓存雪崩、缓存穿透、基于布隆过滤器解决缓存穿透的问题、缓存击穿、基于缓存击穿工作实际案例
文章目录 ①. 缓存雪崩 ②. 缓存穿透 ③. 在centos7下布隆过滤器2种安装方式 ④. 缓存击穿 ⑤. 高并发的淘宝聚划算案例落地 ①. 缓存雪崩 ①. 问题的产生:缓存雪崩是指缓存数据大批量 ...
- CDN缓存系统——varnish之清除缓存
目录 一.varnish进程的工作模式 二.缓存 三.手动清理缓存 四.图形化清理缓存 1.安装bansys安装包(帮助清除varnish内存) 2.修改apache使用的端口 3.修改varnish ...
- android 观察者模式的简单demo,一个简单的demo彻底搞懂观察者模式
介绍 观察者模式也被称为发布-订阅(Publish/Subscribe)模式,它属于行为型模式的一种.观察者模式定义了一种一对多的依赖关系,一个主题对象可被多个观察者对象同时监听.当这个主题对象状态变 ...
- 所有接口分类 作用详解 物理接口 管理接口 业务接口 逻辑接口
目录 接口分类 物理接口 管理接口 业务接口 逻辑接口 接口分类 接口是设备与网络中的其它设备交换数据并相互作用的部件,分为物理接口和逻辑接口两类,其中: 物理接口 物理接口是真实存在.有器件支持的接 ...
- WebApi接口 - 如何在应用中调用webapi接口
» 简单做个webapi(查询+添加)接口 首先,我们需要有一个webapi接口项目,我这里以前面WebApi接口 - 响应输出xml和json文章的项目来构建本篇文章的测试用例:这里新建一个 DbD ...
最新文章
- 【ASP.NET Web API教程】2.3.3 创建Admin控制器
- 转: jdbc连接数据库需要注意和出错的地方
- 做不背锅的运维(文末有彩蛋!)
- c#操作word表格
- 语言木头折断放置问题_木头文化:干燥,是木成材的关键一步
- python入门第六章 信息安全策略-文件备份 用户账户管理
- C语言小知识---printf()函数转换符的意义
- 一种基于地图导航的语音识别管理系统的制作方法
- Prism4翻译笔记(二)第二章:初始化Prism应用程序
- Flask 下载中文名文件
- iPhone照片备份与恢复
- xp无法访问win7计算机,xp系统访问win7共享文件夹提示无权限如何解决
- 如何使用Github实现协同工作(例子:两人合作写代码)
- matlab char 转asc码,科学网—C语言与MATLAB对二进制文件与ASCII文件转换 - 张凌的博文...
- 小白看了也会选:数据分析的常见工具有哪些
- 【21.00%】【vijos P1018】智破连环阵
- Java生成纳秒时间戳
- 前端百题斩【006】——js中三类字符串转数字的方式
- 【Linux vim 入门及渐进过程2 - vim 常用插件配置】
- 腾讯云、阿里云都“服”了,云容灾你还迟疑什么?
热门文章
- js (javascript) 中获取年月日信息
- ice 服务java连接,“先进的互联互通技术”–使用ice联通php和java [part 1 server]
- android模拟器无法拍照,为什么dafault相机无法在android模拟器中工作?
- php如何避免时间重复,如何避免/停止php和html的重复插入?
- 这是不是帮女朋友拍照时的你?哈哈哈哈
- 千万别让男朋友穿你的短裙......
- 20个天才般的走心设计,真是太牛了!
- 为什么老师批改完试卷,分数下要画两条横线?今天终于知道了!
- 如果有人问你什么是大数据?不妨说说这10个典型的大数据案例
- 《销售总监》读书笔记