voku / simple-cache
简单缓存库
4.1.0
2022-12-20 11:05 UTC
Requires
- php: >=7.0.0
- psr/simple-cache: ~1.0 || ~2.0
Requires (Dev)
- phpunit/phpunit: ~6.0 || ~7.0 || ~9.0
Suggests
- predis/predis: ~1.1
- symfony/var-exporter: ~3.0 || ~4.0 || ~5.0
Provides
- dev-master
- 4.1.0
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.1
- 4.0.0
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.2
- 3.0.1
- 3.0.0
- 2.4.0
- 2.3.5
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.6.1
- 1.0.6
- 1.0.5
- 1.0.4.1
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-renovate/phpunit-phpunit-11.x
- dev-renovate/psr-simple-cache-3.x
- dev-dependabot/add-v2-config-file
- dev-whitesource/configure
This package is auto-updated.
Last update: 2024-09-04 16:04:17 UTC
README
⚡ 简单缓存类
这是一个为PHP >= 7.0提供的简单缓存抽象层,它允许您以简单的方式与缓存服务器交互。您可以在构造函数中定义适配器/序列化器,或者类将按此顺序自动检测您的服务器缓存:
- Memcached / Memcache
- Redis
- Xcache
- APC / APCu
- OpCache (通过PHP文件)
- 静态-PHP-Cache
获取"Simple Cache"
您可以从这里下载,或者使用composer进行安装。
{ "require": { "voku/simple-cache": "4.*" } }
通过"composer require"安装
composer require voku/simple-cache
快速开始
use voku\cache\Cache; require_once 'composer/autoload.php'; $cache = new Cache(); $ttl = 3600; // 60s * 60 = 1h $cache->setItem('foo', 'bar', $ttl); $bar = $cache->getItem('foo');
用法
use voku\cache\Cache; $cache = new Cache(); if ($cache->getCacheIsReady() === true && $cache->existsItem('foo')) { return $cache->getItem('foo'); } else { $bar = someSpecialFunctionsWithAReturnValue(); $cache->setItem('foo', $bar); return $bar; }
如果您有一个重型任务,例如一个非常大的循环,那么您也可以使用静态缓存。但请注意,这将存储在PHP中(它需要更多的内存)。
use voku\cache\Cache; $cache = new Cache(); if ($cache->getCacheIsReady() === true && $cache->existsItem('foo')) { for ($i = 0; $i <= 100000; $i++) { echo $this->cache->getItem('foo', 3); // use also static-php-cache, when we hit the cache 3-times } return $cache->getItem('foo'); } else { $bar = someSpecialFunctionsWithAReturnValue(); $cache->setItem('foo', $bar); return $bar; }
PS:默认情况下,静态缓存也用于>= 10次缓存命中。但您可以通过$cache->setStaticCacheHitCounter(INT)来配置此行为。
管理员或特定IP地址的无缓存
如果您在构造函数中使用参数"$checkForUser"(=== true),则缓存不会用于管理员会话。
-> 您还可以通过添加名为"checkForDev()"的全局函数来覆盖对用户的检查。
覆盖自动连接选项
您可以通过"CacheAdapterAutoManager"和"Cache"-构造函数中的"$cacheAdapterManagerForAutoConnect"选项来覆盖缓存自动检测。此外,您还可以在"Cache"-构造函数中激活"$cacheAdapterManagerForAutoConnectOverwrite"选项,这样您就可以实现自己的缓存自动检测逻辑。
$cacheManager = new \voku\cache\CacheAdapterAutoManager(); // 1. check for "APCu" support first $cacheManager->addAdapter( \voku\cache\AdapterApcu::class ); // 2. check for "APC" support $cacheManager->addAdapter( \voku\cache\AdapterApcu::class ); // 3. try "OpCache"-Cache $cacheManager->addAdapter( \voku\cache\AdapterOpCache::class, static function () { $cacheDir = \realpath(\sys_get_temp_dir()) . '/simple_php_cache_opcache'; return $cacheDir; } ); // 4. try "File"-Cache $cacheManager->addAdapter( \voku\cache\AdapterFileSimple::class, static function () { $cacheDir = \realpath(\sys_get_temp_dir()) . '/simple_php_cache_file'; return $cacheDir; } ); // 5. use Memory Cache as final fallback $cacheManager->addAdapter( \voku\cache\AdapterArray::class ); $cache = new \voku\cache\CachePsr16( null, // use auto-detection null, // use auto-detection false, // do not check for usage true, // enable the cache false, // do not check for admin session false, // do not check for dev false, // do not check for admin session false, // do not check for server vs. client ip '', // do not use "_GET"-parameter for disabling $cacheManager, // new auto-detection logic true // overwrite the auto-detection logic );
支持
有关支持和捐款,请访问Github | 问题 | PayPal | Patreon。
有关状态更新和发布公告,请访问发布 | Twitter | Patreon。
有关专业支持,请联系我。
感谢
- 感谢GitHub(微软)为我们托管代码和良好的基础设施,包括问题管理等。
- 感谢IntelliJ,他们制作了最好的PHP IDE,并给了我PhpStorm的开源许可证!
- 感谢Travis CI,它是最好的,最简单的持续集成工具!
- 感谢StyleCI,它提供了简单但强大的代码风格检查。
- 感谢PHPStan 和 Psalm,它们提供了真正出色的静态分析工具,并帮助我们在代码中发现了错误!