Use second cache flexibly in Laravel.
composer require hms5232/laravel-twin-cache
Add twin
store in config/cache.php
:
'stores' => [ // other store config here 'twin' => [ 'driver' => 'twin', 'older' => env('TWIN_CACHE_OLDER', 'redis'), // First/preferred cache 'younger' => env('TWIN_CACHE_YOUNGER', 'database'), // Second/backup cache 'sync_ttl' => env('TWIN_CACHE_TTL'), // TTL for younger synced to older. Default is null => forever ], ],
Change cache drive in .env
:
CACHE_DRIVER=twin
All Laravel built-in methods modify the older
cache, and you can add suffix Twin
to method name for twin cache.
For example, you want to update both older and younger cache:
Cache::put('foo', 'bar'); // change "put" to "putTwin" Cache::putTwin('foo', 'bar');
Another example, a key is in younger cache drive but doesn't exist in older. You want to sync this key when select this key:
// only select older cache Cache::get('foo'); // This will select older cache first // If no result, select younger, else return result // 1. If exists in younger, insert into older cache and return // 2. If it doesn't exist, return default value Cache::getTwin('foo', 'bar');
So you can use second cache flexibly depend on need.
All parameters are same.
Laravel built-in | twin cache |
---|---|
get | getTwin |
many | |
put | putTwin |
putMany | putManyTwin |
increment | incrementTwin |
descrement | descrementTwin |
forever | foreverTwin |
forget | forgetTwin |
flush | flushTwin |
has | hasTwin |
Copyright (c) 2022 hms5232
See LICENSE.