maplephp / cache
MaplePHP Cache,一款用户友好的缓存库,支持完整的PSR-6和PSR-16规范。
Requires
- php: >=8.0
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(); }