When you have a situation where you need to be able to track keys, you can use tags. Unfortunately tags aren't supported by all drivers, and retrieving keys is only doable the hacky way with redis.
Cache Index for Laravel provides a driver-independent way for managing such indexes.
Just install with the following command.
composer require henzeb/laravel-cache-index
Under the hood, index
returned an extended Illuminate\Cache\Repository
object, which manages your index.
See Laravel doc's for the possible methods.
keys are prefixed with the index name, so that you can't accidentally overwrite any values belonging to that index.
Note: tags are currently not supported when using index
.
Cache::index('myIndex')->add('test', 'my value');
Cache::index('myIndex')->put('put', 'my value');
Cache::driver('file')->index('myIndex')->remember('filed', 'my value in file');
Cache::index('myIndex')->get('put'); // returns 'my value'
Cache::get('put'); // returns null
Cache::index('myIndex')->flush(); // only flushes keys in index
The index name can, next to a regular string, also be applied as an array. This is handy when you have an index based on variables.
Cache::index(['myIndex', 'Read', 'Write']); // uses index name `myIndex.Read.Write`
Cache::index(['myIndex', ActionEnum::Read]); // uses index name `myIndex.Read`
Cache::index(['myIndex', new StdClass()]); // uses index name `myIndex.StdClass`
Cache::index(['myIndex', new StringableClass('stringed')]); // uses index name `myIndex.stringed`
Retrieving a list of keys is very easy.
Cache::index('myIndex')->keys(); // returns ['test', 'put']
Cache::driver('file')->index('myIndex')->keys(); // returns ['filed']
With this method, you can know how many keys are inside your index.
Cache::index('myIndex'); // using default driver
Cache::driver('file')->index('myIndex'); // using file driver
Makes a copy of a cached item, and adds the key in the new index.
It returns true if it's successful, false otherwise.
Cache::index('myIndex')->copy('myKey', 'targetIndex');
Cache::index('myIndex')->copy('myKey', 'targetIndex', 10);
Does the same as Copy
, except that it removes its own copy.
It returns true if it's successful, false otherwise.
Cache::index('myIndex')->move('myKey', 'targetIndex');
Cache::index('myIndex')->move('myKey', 'targetIndex', 10);
Note: Be aware that either copy and move do nothing with the TTL. It creates a new copy of the cached item with a new TTL if given.
Just like with arrays, takes and removes the last indexed key and returns the value associated with that index.
Just like with arrays, takes and removes the first indexed key and returns the value associated with that index.
returns a random value.
returns a random key.
Returns a random value and pulls it from the cache.
Allows you to synchronize the ttl between indexed keys.
Cache::index('myIndex')->syncTtl(10);
Cache::index('myIndex')->syncTtl(now()->addSeconds(10));
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email henzeberkheij@gmail.com instead of using the issue tracker.
The GNU AGPLv. Please see License File for more information.