Package Data | |
---|---|
Maintainer Username: | sway |
Package Create Date: | 2016-04-05 |
Package Last Update: | 2024-09-22 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-14 15:13:36 |
Package Statistics | |
---|---|
Total Downloads: | 335,029 |
Monthly Downloads: | 12,187 |
Daily Downloads: | 214 |
Total Stars: | 173 |
Total Watchers: | 5 |
Total Forks: | 28 |
Total Open Issues: | 5 |
This is full-featured replacement for Laravel's Redis and file cache storages. All storages support proper tagging.
Cache pools provided by http://www.php-cache.com/ + I've added HierarchialFilesystemCachePool
based on code of
FilesystemCachePool
provided by http://www.php-cache.com/. All classes in this lib only proxies between Laravel's
cache system and cache pools from http://www.php-cache.com/ and my own pools.
For example you have:
Cache::tags(['tag1', 'tag2'])->put('tag-test1', 'ok', 20);
How Laravel's native cache works with tags and Redis (Laravel 5.2):
Cache::tags(['tag1', 'tag2'])->get('tag-test1'); //< 'ok'
Cache::tags(['tag2', 'tag1'])->get('tag-test1'); //< null
Cache::tags(['tag1'])->get('tag-test1'); //< null
Cache::tags(['tag2'])->get('tag-test1'); //< null
Cache::get('tag-test1'); //< null
Cache::forget('tag-test1'); //< won't delete anything
Cache::tags(['tag1', 'tag2'])->forget('tag-test1'); //< deleted
Cache::tags(['tag2', 'tag1'])->forget('tag-test1'); //< won't delete anything
Cache::tags(['tag1'])->forget('tag-test1'); //< won't delete anything
Cache::tags(['tag2'])->forget('tag-test1'); //< won't delete anything
Cache::tags(['tag1'])->flush(); //< won't delete anything
Cache::tags(['tag2'])->flush(); //< won't delete anything
Cache::tags(['tag1', 'tag2'])->flush(); //< flushed
Cache::tags(['tag2', 'tag1'])->flush(); //< won't delete anything
If you think that this is correct behavior - go away, you don't need this lib.
How it works with this lib:
Cache::tags(['tag1', 'tag2'])->get('tag-test1'); //< 'ok' - use Cache::get('tag-test1') instead
Cache::tags(['tag2', 'tag1'])->get('tag-test1'); //< 'ok' - use Cache::get('tag-test1') instead
Cache::tags(['tag1'])->get('tag-test1'); //< 'ok' - use Cache::get('tag-test1') instead
Cache::tags(['tag2'])->get('tag-test1'); //< 'ok' - use Cache::get('tag-test1') instead
Cache::get('tag-test1'); //< 'ok'
Cache::forget('tag-test1'); //< deleted
Cache::tags(['tag1', 'tag2'])->forget('tag-test1'); //< deleted - use Cache::forget('tag-test1') instead
Cache::tags(['tag2', 'tag1'])->forget('tag-test1'); //< deleted - use Cache::forget('tag-test1') instead
Cache::tags(['tag1'])->forget('tag-test1'); //< deleted - use Cache::forget('tag-test1') instead
Cache::tags(['tag2'])->forget('tag-test1'); //< deleted - use Cache::forget('tag-test1') instead
Cache::tags(['tag1'])->flush(); //< deleted all cache entries with tag 'tag1'
Cache::tags(['tag2'])->flush(); //< deleted all cache entries with tag 'tag2'
Cache::tags(['tag1', 'tag2'])->flush(); //< deleted all cache entries with tag 'tag1' or 'tag2'
Cache::tags(['tag2', 'tag1'])->flush(); //< deleted all cache entries with tag 'tag2' or 'tag1'
Nothing is needed, package auto-discovery will work.
Add to composer.json
:
"require": {
"swayok/alternative-laravel-cache": "5.4.*"
}
Add to composer.json
:
"require": {
"swayok/alternative-laravel-cache": "5.3.*"
}
Add to composer.json
:
"require": {
"predis/predis": "*"
}
Add to config/app.php
:
$providers = [
\AlternativeLaravelCache\Provider\AlternativeCacheStoresServiceProvider::class,
]
redis
- redis cache with proper taggingfile
- file-based cache with proper tagginghierarchial_file
- hierarchial file-based cache with proper tagging (http://www.php-cache.com/en/latest/hierarchy/).
This driver also supports /
instead of |
so you can use /users/:uid/followers/:fid/likes
instead of |users|:uid|followers|:fid|likes
as it better represents path in file system.By default service provider will replace Laravel's redis
and file
cache stores.
You can alter this behavior like this:
class MyAlternativeCacheStoresServiceProvider extends AlternativeCacheStoresServiceProvider {
static protected $redisDriverName = 'altredis';
static protected $fileDriverName = 'altfile';
}
File cache storage currently supports only 'driver' => 'file'
. You can extend list of file cache drivers by
overwriting AlternativeCacheStoresServiceProvider->makeFileCacheAdapter()
Yep, there is no tests right now and possibly they will never appear.