polidog/ultracache

0.0.1 2013-04-10 14:44 UTC

This package is auto-updated.

Last update: 2024-09-21 20:48:51 UTC


README

为了释放压力和娱乐,我编写了一个PHP库,叫做乌尔特拉缓存。当我想到如果Memache服务器和AP服务器在不同的服务器上,每次从memcache获取数据都会消耗网络带宽时,我就这样想了。
当本地有缓存时,就从本地获取,没有时则从memcahe获取,感觉就像这样。

为了使其能够支持Memcached之外的其他缓存,我按照驱动器的方式进行了设计。

顺便说一下,我没有进行测试,也没有检查其功能。只是写了代码,所以在使用时请注意。如果发现问题,欢迎通过Pull Request提交。

安装

pecl install memcached
pecl install apc

配置

<?php
$config = array(
	'remote'	=> array( // リモート側
		'Memcached' => array(
			'servers' => array(
				array('localhost',11211), // memcachedのサーバ設定とおなじ
			),
		),
	),
	'local'		=> array( // AP側(実行しているPHPの鯖)
		'Apc' => array(), // 別に設定は特になし、でも空配列じゃないとだめだよー
	),
);

使用

我觉得它可能遵循了PSR-0规范,所以您可以用它来配合自动加载器。使用方法非常简单。

<?php
require __DIR__ . '/../vendor/autoload.php';
$config = array(
	'remote'	=> array( // リモート側
		'Memcached' => array(
			'servers' => array(
				array('localhost',11211), // memcachedのサーバ設定とおなじ
			),
		),
	),
	'local'		=> array( // AP側(実行しているPHPの鯖)
		'Apc' => array(), // 別に設定は特になし、でも空配列じゃないとだめだよー
	),
);

try { 
	$cache = new Ultracache\Ultracache($config);
	$cache->set('test','cachetest'); // キャッシュをセット
	var_dump($cache->get('test')); // キャッシュをゲット

} catch (Ultracache\Exception\NosupportDriverException $noe ) {
	echo $noe->getMessage();
	echo "\n";
}

可能的话,您可以通过查看示例来了解。当缓存不存在时,它会在memcached和本地APC缓存中保存,当缓存存在时,它只会从本地获取缓存,当本地没有时,它会从memcache获取,并将缓存放入本地APC。
我没有添加与其他AP服务器缓存同步的功能,所以建议您缓存变化不大的数据。