beste/in-memory-cache

A PSR-6 In-Memory cache that can be used as a fallback implementation and/or in tests.

Fund package maintenance!
jeromegamez

Installs: 1 706 972

Dependents: 5

Suggesters: 0

Security: 0

Stars: 9

Watchers: 1

Forks: 0

Open Issues: 0

1.3.1 2024-08-26 15:51 UTC

This package is auto-updated.

Last update: 2024-11-13 08:09:51 UTC


README

A PSR-6 In-Memory cache that can be used as a default implementation and in tests.

Current version Packagist PHP Version Support Monthly Downloads Total Downloads Tests

Installation

composer require beste/in-memory-cache

Usage

use Beste\Cache\InMemoryCache;

$cache = new InMemoryCache();

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

assert($item->isHit() === false);
assert($item->get() === null);

$item->set('value');
$cache->save($item);

// Later...

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

assert($item->isHit() === true);
assert($item->get() === 'value');

You can also provide your own PSR-20 clock implementation, for example a frozen clock for testing, for example from the beste/clock library.

use Beste\Clock\FrozenClock;
use Beste\Cache\InMemoryCache;

$clock = FrozenClock::fromUTC()
$cache = new InMemoryCache();

$item = $cache->getItem('key');
$item->set('value')->expiresAfter(new DateInterval('PT5M'));
$cache->save($item);

$clock->setTo($clock->now()->add(new DateInterval('PT2M')));
assert($cache->getItem('key')->isHit() === true);

$clock->setTo($clock->now()->add(new DateInterval('PT5M')));
assert($cache->getItem('key')->isHit() === false);

Running tests

composer test

License

This project is published under the MIT License.