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.