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.