drift / react-key-value
轻量级库,为您的 ReactPHP 应用程序提供动态和智能本地缓存。
0.1.0
2021-04-29 15:02 UTC
Requires
- php: ^7.4 || ^8.0
- drift/react-functions: ^0.1
- react/event-loop: ^1.0 || ^0.5 || ^0.4 || ^0.3.5
- react/promise: ^2.7 || ^1.2.1
Requires (Dev)
- clue/block-react: ^1.3
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-08-29 06:01:42 UTC
README
这是一个简单的键值本地缓存,适用于您的 ReactPHP 项目
设置键
您可以在缓存中根据键设置值。听起来很简单。
use React\EventLoop\Factory; use Drift\Cache\LocalKeyValueCache; $loop = Factory::create(); $cache = new LocalKeyValueCache($loop); $cache->set('my_key', 'Any value');
定义 TTL
您可以为这个键添加 TTL。在 n 秒后,这个键将被自动删除。
use React\EventLoop\Factory; use Drift\Cache\LocalKeyValueCache; $loop = Factory::create(); $ttl = 0.1; // Means 0.1 second (100 milliseconds) $cache = new LocalKeyValueCache($loop); $cache->set('my_key', 'Any value', $ttl);
获取键
您可以通过键从这个缓存中获取值。如果值在缓存中,则将返回该值,无需任何转换。否则,将返回 null。
use React\EventLoop\Factory; use Drift\Cache\LocalKeyValueCache; $loop = Factory::create(); $cache = new LocalKeyValueCache($loop); $cache->set('my_key', 'Any value'); $value = $cache->get('my_key');
访问时刷新 TTL
TTL 可以提供一种基本清理几乎不使用元素的方法。通过在 TTL 中定义值,默认情况下,这个键将在 n 秒后删除,无论这个键在此之前的请求次数有多少。如果我们想要在每次访问键时自动刷新这个 TTL,我们可以使用这个功能。
在这个示例中,我们可以看到键被定义为 2 秒的 TTL,并且每秒请求一次,启用了 refreshTTL
标志。在正常情况下,2 秒后 get
方法应该返回 null,但由于我们强制在访问键时刷新这个 TTL,只要我们没有超过 2 秒的时间间隔,我们的键总是会可用。
use React\EventLoop\Factory; use Drift\Cache\LocalKeyValueCache; $loop = Factory::create(); $cache = new LocalKeyValueCache($loop); $ttl = 2; // Means 2 seconds $cache->set('my_key', 'Any value'); // ... After 1 second $value = $cache->get('my_key', true); // Found // ... After 1 second $value = $cache->get('my_key', true); // Found // ... After 1 second $value = $cache->get('my_key', true); // Found // ... After 3 second $value = $cache->get('my_key', true); // Not Found
使用这种策略,您将只保存最频繁使用的本地值,从而在缓存效率和存储大小之间找到良好的平衡。
删除键
您可以手动删除键。如果键在缓存中没有找到,则不会发生任何事情。
use React\EventLoop\Factory; use Drift\Cache\LocalKeyValueCache; $loop = Factory::create(); $cache = new LocalKeyValueCache($loop); $cache->delete('my_key');
使用中间件
在您的应用程序中,您可能希望将此缓存用作简单且薄的中间件层,这样您就可以轻松启用和禁用,而无需更改您的领域实现。
那么您应该使用 KeyValueCacheMiddleware
类,作为一个解耦的中间件部分。
因此,拥有这个原始的 PHP 代码
return $this ->dbConnection ->find('token', '123');
您可以轻松添加一个简单的层,缓存时间为 10 分钟,每次键被请求时更新键的新鲜度。
use React\EventLoop\Factory; use Drift\Cache\LocalKeyValueCache; use Drift\Cache\KeyValueCacheMiddleware; $loop = Factory::create(); $ttl = 600; // 10 minutes $cache = new LocalKeyValueCache($loop); $middleware = new KeyValueCacheMiddleware($cache); return $middleware->getOrAsk('token_123', function() { return $this ->dbConnection ->find('token', '123'); }, $ttl, true);