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');

?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《C++ Primer》10.1节练习

练习10.1: #include <iostream> #include <vector> #include <algorithm> using namespace std;int main() {vector<int>vi;int val;vi.push_back(45);vi.push_back(45);vi.push_back(45);vi.push_back(45);for (int i 1; i < 45; i) {vi.push_ba…

ueditor编辑器php上传配置,php版本UEditor编辑器图片上传设置

"savePath" > "../../upload/" , //保存路径注意&#xff0c;这里远程抓取的图片保存在了upload根目录下&#xff0c;要想保存在upload的子目录下&#xff0c;例如每个月份的文件夹下&#xff0c;则需要找到以下代码$savePath $config[ sav…

Asp.Net Core AuthorizeAttribute 和AuthorizeFilter 跟进及源码解读

一、前言IdentityServer4已经分享了一些应用实战的文章&#xff0c;从架构到授权中心的落地应用&#xff0c;也伴随着对IdentityServer4掌握了一些使用规则&#xff0c;但是很多原理性东西还是一知半解&#xff0c;故我这里持续性来带大家一起来解读它的相关源代码&#xff0c;…

日期计算算法训练

知识点: 闰年共有366天&#xff08;1月~12月分别为31天、29天、31天、30天、31天、30天、31天、31天、30天、31天、30天、31天&#xff09;。 题目: 蓝桥杯2015初赛-星系炸弹[蓝桥杯2018初赛]第几天-日期计算(水题)[蓝桥杯2018初赛]星期一-日期计算

1张手稿图讲明白 Kubernetes 是怎么运行的

注意&#xff1a;如果您已经知道Kubernetes的工作原理&#xff0c;那么您可能会对我之前的博文感兴趣&#xff0c;请停止使用具有管理员权限的kubeconfigKubernetes是最初由Google设计的开源工具&#xff0c;现在由 Cloud Native Computing Foundation&#xff08;CNCF&#xf…

java继承层次结构,在状态模式中实现继承层次结构 - java

我有一个与此非常相似的设计&#xff1a;这里的NewOrder&#xff0c;Registered&#xff06;Granted都有通用方法AddOrderline()和Cancel()&#xff0c;因此将这两种方法重构为父类很容易。当我要Cancel一条Shipped行(当前未在图中显示)时&#xff0c;会出现问题。由于发运行不…

枚举算法训练

知识点: 素数-试除法和埃式筛选法模板不要让数组越界&#xff0c;一越界&#xff0c;答案总容易错。 题目: 蓝桥杯2015初赛-方程整数解-枚举 蓝桥杯2015初赛-奇妙的数字 蓝桥杯2015初赛-饮料换购-枚举 蓝桥杯2015初赛-奖券数目-枚举 蓝桥杯2015初赛-三羊献瑞-枚举 蓝桥杯…

就喜欢用vSphere部署K8s集群,不全是因为自动化!

通过努力&#xff0c;我们有了一个完整配置的工作负载域&#xff0c;其中包括一个NSX-T Edge部署。现在&#xff0c;我们准备继续使用Kubernetes 部署vSphere。通过VMware Cloud Foundation 4.0中的SDDC Manager&#xff0c;我们确保NSX-T Edge可用&#xff0c;并且还确保Workl…

模拟算法训练

知识点: C stringstream输入方式C关于getline()和getchar()的小点Csubstr()用法toupper小写变大写 tolower大写变小写有些题目记得开longlong 6.蛇型方向向量写法: int dx[] {0,1,0,-1},dy[] {1,0,-1,0}; int d 0; d (d1)%4;题目: 蓝桥杯2016初赛-有奖猜谜-模拟 蓝桥杯…

同源策略_如何支持跨域

欢迎大家阅读《朝夕Net社区技术专刊》我们致力于.NetCore的推广和落地&#xff0c;为更好的帮助大家学习&#xff0c;方便分享干货&#xff0c;特创此刊&#xff01;很高兴你能成为忠实读者&#xff0c;文末福利不要错过哦&#xff01;01PARTCoreWebApi的调用1.在Core MVC下建立…

php常用linux命令httpd,Linux常用的100个命令

列举一下在使用linux系统时经常使用的几个命令并做简要说明。1、export //查看所有环境变量2、wc -l //统计行数、wc -w 统计单词3、lsattr file //查看文件属性4、cat /etc/passwd |awk -F: ‘{print $1} //查看系统中所有用户5、cat /etc/group //查看系统中所有的组6、echo …

二分算法训练

知识点: 整数二分 题目: 蓝桥杯2017初赛-分巧克力-二分

企业数字化转型解决方案

2020年国务院常务会议明确指出&#xff0c;依托工业互联网促进传统产业加快上线上云。此前&#xff0c;工信部也在全国工业和信息化工作会议上表示&#xff0c;2020年要实施“5G工业互联网”512工程。和5G、人工智能等同列的“新基建”&#xff0c;工业互联网成为数字时代的基础…

网站 asp和php的用途,asp和php都有什么功能?

ASP是什么&#xff1f;有什么功能&#xff1f;ASP.NET是微软开发&#xff0c;建立动态的&#xff0c;强大的&#xff0c;智能的、可扩展的网站和网际网络应用的全功能的程序语言如C或VB.NET #。它包括一个强大的安全评估的亮点&#xff0c;以及一个组织的小工具&#xff0c;可以…

ASP.NET Core 3.x - Endpoint Routing 路由体系的内部机制

Endpoint是什么&#xff1f;Endpoint简单的可以理解为这样的一些类&#xff0c;它们包含一个请求的委托&#xff08;Request Delegate&#xff09;和其它的一些元数据&#xff0c;使用这些东西&#xff0c;Endpoint类可以生成一个响应。而在MVC的上下文中&#xff0c;这个请求委…

前缀和,差分算法训练

知识点: 一维前缀和二维前缀和一维差分二维差分 题目: 蓝桥杯2017初赛-k倍区间-前缀和[蓝桥杯2018初赛]递增三元组-双指针&#xff0c;枚举&#xff0c;排序&#xff0c;前缀和

java获取主机信息大全,网络编程:Java获取网络主机信息

java.net.InetAddress类表示互联网协议 (IP) 地址。有两个子类&#xff1a;Inet4Address&#xff0c; Inet6Address通过 InetAddress可以方便获取一个域名下的IP&#xff0c;也可以获取一个IP的主机名。下面是例子&#xff0c;通过程序查看51cto主机的IP信息&#xff0c;51cto是…

【项目升级】单库、多库、读写分离 · 任你选

本期配套视频&#xff1a;https://www.bilibili.com/video/BV1BJ411B7mn?p6&#xff08;点击阅读原文&#xff0c;可看&#xff0c;如果没有&#xff0c;最晚下午可看&#xff09;继上周增加【任务调度】以后&#xff0c;继续对项目进行2.0版本升级&#xff0c;其实改动的地方…

数论算法训练

知识点: 如果a,b均是正整数且互质&#xff0c;那么由axby&#xff0c;x>0,y>0,那么由这两个数不能组成的最大的数是:a*b-a-b 我们可以发现&#xff0c;模9的时候有这样一个规律: 对X模Y&#xff0c;其实等于X每一位的数的和SUM模Y。 记住&#xff0c;这个方法只能模9的时…

基于matlab的数字下变频器的设计与仿真应用,基于MATLAB的数字下变频器的没汁与仿真应用...

基于MATLAB的数字下变频器的没汁与仿真应用范文晶;王海;周渭;钱时祥;江炜宁【期刊名称】《电子质量》【年(卷),期】2009(000)003【摘要】文中应用软件无线电思想对数字下变频器中的几个关键技术进行了研究,对下变频各个模块所涉及到的CIC、HB、FIR等关键算法进行了讨论、提炼与…