maplephp/cache

MaplePHP Cache,一款用户友好的缓存库,支持完整的PSR-6和PSR-16规范。

v1.0.0 2023-11-27 20:14 UTC

This package is auto-updated.

Last update: 2024-09-16 16:57:46 UTC


README

MaplePHP Cache,一个干净且用户友好的缓存库。MaplePHP Cache的设计理念是提供简单易用的缓存体验,无论您是否熟悉PSR-6或PSR-16,该库都为您提供了一个流畅且直观的缓存解决方案,适用于您的PHP应用程序。

安装

composer require maplephp/cache

初始化缓存引擎

首先初始化MaplePHP Cache类,并向其传递一个处理器。

use MaplePHP\Cache\Cache;
use MaplePHP\Cache\Handlers\FileSystemHandler;

$cache = new Cache(new FileSystemHandler(dirname(__FILE__)."/storage/cache"));

使用

使用非常简单

$expireInOneHour = 3600; // 3600 seconds = 1 hour
if(!$cache->has("test") && $cache->set("test", "Lorem ipsum dolor", $expireInOneHour)) {
	echo "Cache has been set<br>";
}
echo "Get cache: ".$cache->get("test");

错误处理

虽然不是必需的,但建议处理可能出现的关键可抛出错误,例如无效的缓存键、文件权限不足或与缓存服务器的可能连接问题。记录这些异常对于错误跟踪和故障排除很有帮助。

$cache = new Cache(new FileSystemHandler(dirname(__FILE__)));
try {
	// Invalid key set
	print_r($cache->get("te st"));
} catch (Exception $e) {
	// Will trigger: Invalid cache key. Only alphanumeric characters, underscores, and dots are allowed.
	echo $e->getMessage();
}

处理器

文件系统

将缓存保存为系统上的文件。

参数1:(字符串)您想要保存缓存文件的目录路径

use MaplePHP\Cache\Handlers\FileSystemHandler;
$fileSystem = new FileSystemHandler(dirname(__FILE__)."/storage/cache");

Memcached

使用Memcached在内存中保存缓存 (高性能)

参数1:(字符串|数组)服务器的地址(或使用类的默认值 "MemcachedHandler::HOST")

参数2:(整数|null)服务器的端口(或使用类的默认值 "MemcachedHandler::PORT")

参数3:(整数)服务器的权重(参数默认为0,但您也可以使用默认值 "MemcachedHandler::WEIGHT" 设置它)

use MaplePHP\Cache\Handlers\MemcachedHandler;
// One server
$memcached = new MemcachedHandler(MemcachedHandler::HOST, MemcachedHandler::PORT, MemcachedHandler::WEIGHT);
// Multiple servers
$memcached = new MemcachedHandler([
	["Memcached.server1.com", 11211, 1], // Weight "1" (this server has priority)
	["Memcached.server2.com", 11212, 2],
	["Memcached.server3.com", 11300, 3]
]);

命令列表(PSR-16)

获取缓存项

如果成功,可以返回混合值,如果失败则返回默认值。默认值不是必需的,默认为 空值

$cache->get("test", "Default value");

检查缓存项是否存在

将返回布尔值

$cache->has("test");

设置缓存项

允许设置混合类型的缓存值,如字符串、数组,包括PSR-7: HTTP Streams。将返回布尔值。

// Set cache with 1 hour lifetime
$cache->set("test", "Lorem ipsum dolor", 3600);
// Set cache that will persist
$cache->set("test2", "Lorem ipsum dolor");

删除缓存项

将返回布尔值

$cache->delete("test");

清除并自动删除所有缓存项

将返回布尔值

$cache->clear();

获取多个缓存项

如果成功,将返回包含混合值的数组,如果失败则返回默认值。默认值不是必需的,默认为 空值

$cache->getMultiple(["test1", "test2"], "Default value");

设置多个缓存项

将返回布尔值

$cache->setMultiple(["test1" => "Lorem", "test2" => "Ipsum"], 3600);

删除多个缓存项

将返回布尔值

$cache->deleteMultiple(["test1", "test2"]);

PSR-6 示例

如果您的应用程序需要高级缓存功能、分层缓存或缓存标签,PSR-6是一个更好的选择。

use MaplePHP\Cache\Handlers\FileSystemHandler;
$cache = new FileSystemHandler(dirname(__FILE__)."/storage/cache");

$item = $cache->getItem('test');

try {
	if(!$item->isHit()) {
		$item->set(["Lorem 1", "Lorem 2"])->expiresAfter(3600);
		$cache->save($item);

		echo "Insert to cache: ";
		print_r($item->get());

	} else {
		echo "Read from cache: ";
		print_r($item->get());
	}

} catch (Exception $e) {
	echo $e->getMessage();
}