基于MYSQL实现PHP数据缓存

浏览:3779 发布日期:2017/08/09 分类:功能实现 关键字: WorkerMan ThinkPHP ThinkPHP5 MEMORY 缓存
最近在做一个即时通讯的项目,采用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;
    }
原文地址:http://www.wdphp.com/detail/1389.html
评论( 相关
后面还有条评论,点击查看>>