欢迎访问WDPHP素材源码!今天是2024年04月20日 星期六,熬夜对身体不好,早点休息吧!
您好,游客 [ 马上登录 | 注册帐号 | 微信登录 | QQ登录]
当前位置:首页 > 源码 > 函数/类库 > 

基于MYSQL实现PHP数据缓存
栏目分类:函数/类库    发布日期:2017-08-09    浏览次数:5183次     收藏

最近在做一个即时通讯的项目,采用WorkerMan + ThinkPHP5.0.10开发。涉及到缓存处理,为了方便WorkerMan和ThinkPHP多端都能够调用,于是写了这个缓存方法。其实我更中意redis一些,还是以客户服务器环境为准则吧~~

数据表采用MEMORY引擎,以确保读取速度。

使用方法:

//读取缓存
$data = cache('group_53_online');
//更新缓存
$data = 53; //支持数组
cache('group_53_online',$data);
//删除缓存
cache('group_53_online',null);


数据库

DROP TABLE IF EXISTS `wdphp_cache`;
CREATE TABLE `wdphp_cache` (
  `key` varchar(255) NOT NULL,
  `data` varchar(500) DEFAULT NULL COMMENT '缓存',
  PRIMARY KEY (`key`),
  KEY `key` (`key`) USING BTREE
) ENGINE=MEMORY DEFAULT CHARSET=utf8;

函数文件

	function cache($key='',$data=false){
		if(!$key) return false;
		$db = Db::instance('db');  //数据库链接
		
		if($data===null){
			//删除缓存
			$db->query("DELETE `wdphp_cache` WHERE key='{$key}'");
			return TRUE;
		}
		
		if($data === false){
			//读取个条记录
			$info = $db->row("SELECT key,data FROM `wdphp_cache` WHERE key='{$key}'");
			if($info){
				$data = json_decode($info['data'],true);
				$data = $data['data'];
			}else{
				$data = '';
			}
			return $data;
		}
		if($key && $data){
			$res['data'] = $data;
			$data = json_encode($res);
			$db->query("REPLACE INTO `wdphp_cache` ( `key`,`data`) VALUES ('{$key}', '{$data}')");
		}
		return $data;
	}

THINKPHP或其它框架自己修改下函数中的数据库操作方法就可以了。 

QQ交流群:17540504

声明:本文为原创文章,如需转载,请注明来源 WDPHP.COM 并保留原文链接:http://www.wdphp.com/detail/1389.html
源码 模板 特效 素材 资源 教程 站长