Download the PHP package okdewit/redis-datastructures without Composer
On this page you can find all versions of the php package okdewit/redis-datastructures. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download okdewit/redis-datastructures
More information about okdewit/redis-datastructures
Files in okdewit/redis-datastructures
Package redis-datastructures
Short Description A Laravel + Redis library to create more advanced caching datastructures
License MIT
Homepage https://github.com/okdewit/redis-datastructures
Informations about the package redis-datastructures
Redis-datastructures
A Laravel + Redis library to create more advanced caching datastructures
This package is tested with PHP 7.4 & PHP 8.0,
with Laravel 6 and above,
and with both the predis/predis package & with the native phpredis ext.
Usage
Current datastructures in this package:
IndexedCache
IndexedCache caches objects, and optionally maintains one or more secondary indexes for those objects.
Color is just a simple DTO class in this example, but it could be any serializable object or Model.
Expiration for the objects can be set, as well as a handler for cache misses:
The cache can be warmed all at once, or populated with individual items:
Because we defined which properties on the object represent the "primary" and (optionally) "secondary" keys, we can efficiently retrieve items from the cache:
findBy returns a plain Illuminate\Support\Collection with all the objects matching the indexed constraint.
This can of course be converted into a custom collection using something like ->pipeInto(ColorCollection::class).
groupBy returns a LazyCollection with multiple Collections inside, with all objects grouped by the provided secondary index.
Finally, the whole cache can also be retrieved, or emptied:
Testing
Run composer update, and then composer test
By default, it will use the predis client, and assume connection details as defined in phpunit.xml.dist.
This can be customized by copying and editing the dist file to phpunit.xml before running the tests.
On Github Actions, the package is tested against both predis & phpredis.