Home> php教程> php手册> body text

报表的缓存基本存储和读写,报表缓存读写

WBOY
Release: 2016-06-13 09:05:01
Original
982 people have browsed it

报表的缓存基本存储和读写,报表缓存读写

php /** * Class Rpt redis 用于报表的缓存基本存储和读写 2.0 * @simple * Rpt::read("diamond.account",$nick); * Rpt::readSync("diamond.account",$nick); * $finder = Rpt::createFinder("diamond.account",$nick); * $finder->read(); * $finder->readSync(); * * Rpt::save("diamond.account",$nick,$data); * $storage = Rpt::createStorage("diamond.account",$nick); * $storage->save($data); * $storage->save($data,7200); */ class Rpt { public static function read($key,$nick){ $finder = self::createFinder($key,$nick); return $finder->read(); } public static function readSync($key,$nick){ $finder = self::createFinder($key,$nick); return $finder->readSync(); } public static function createFinder($key,$nick){ $key = RptGenerate::key($key,$nick); return new RptFinder($key); } public static function createStorage($key,$nick){ $key = RptGenerate::key($key,$nick); return new RptStorage($key); } public static function save($key,$nick,$data,$expired=7200){ $storage = self::createStorage($key,$nick); return $storage->save($data,$expired); } public static function createRedis(){ $redis = new Redis(); $redis->connect(Yii::app()->params["RedisServerIP"]); return $redis; } } /** * Class RptFinder 数据读取 */ class RptFinder { /** * @var string $key */ public $key; /** * @param string $key */ public function __construct($key){ $this->key = $key; } /** * 非安全读取数据 * @return mixed */ public function read(){ $data = $this->readData(); if($data->isRead && !$data->isExpired()) return $data->data; return null; } protected function readData(){ $redis = Rpt::createRedis(); $rptData = new RptData(); $data = json_decode($redis->get($this->key)); if(false == $data){ $rptData->isRead = false; $rptData->expiredTime = time(); $rptData->expired = 24*3600; }else{ $rptData->expired = $data->expired; $rptData->isRead = $data->isRead; $rptData->expiredTime = $data->expiredTime; $rptData->data = $data->data; } return $rptData; } /** * 同步读取数据 * @return mixed */ public function readSync(){ while(true){ $rptData = $this->readData(); if($rptData->isRead && !$rptData->isExpired()) return $this->read(); sleep(1); } } } /** * Class RptStorage 数据存储 */ class RptStorage { /** * @var string key */ public $key; /** * @param string $key */ public function __construct($key){ $this->key = $key; } /** * 写入数据 * @param $data * @param int $expired * @return bool */ public function save($data,$expired=7200){ $rptData = new RptData(); $rptData->data = $data; $rptData->expiredTime = time(); $rptData->isRead = true; $rptData->expired = $expired; $redis = Rpt::createRedis(); return $redis->setex($this->key, $rptData->expired,json_encode($rptData)); } } /** * Class RptData redis存储数据实体 */ class RptData { public $expired; public $expiredTime; public $data; public $isRead; public function isExpired(){ if(time()-$this->expiredTime > $this->expired) return true; return false; } } /** * Class RptGenerate key生成 */ class RptGenerate { public static function key($key,$nick){ return $key.".".md5($nick); } }
Copy after login

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!