php 读写缓存,报表的缓存基本存储和读写,报表缓存读写_PHP教程

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);*/

classRpt {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 functioncreateRedis(){$redis = newRedis();$redis->connect(Yii::app()->params["RedisServerIP"]);return $redis;

}

}/**

* Class RptFinder 数据读取*/

classRptFinder {/**

* @var string $key*/

public $key;/**

* @param string $key*/

public function __construct($key){$this->key = $key;

}/**

* 非安全读取数据

* @return mixed*/

public functionread(){$data = $this->readData();if($data->isRead && !$data->isExpired())return $data->data;return null;

}protected functionreadData(){$redis = Rpt::createRedis();$rptData = newRptData();$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 functionreadSync(){while(true){$rptData = $this->readData();if($rptData->isRead && !$rptData->isExpired())return $this->read();sleep(1);

}

}

}/**

* Class RptStorage 数据存储*/

classRptStorage {/**

* @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 = newRptData();$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存储数据实体*/

classRptData {public $expired;public $expiredTime;public $data;public $isRead;public functionisExpired(){if(time()-$this->expiredTime > $this->expired)return true;return false;

}

}/**

* Class RptGenerate key生成*/

classRptGenerate {public static function key($key,$nick){return $key.".".md5($nick);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值