antriver/laravel-multi-cache

Combine multiple caches in Laravel
39,803 7
Install
composer require antriver/laravel-multi-cache
Latest Version:10.1.0
PHP:>=8.1
Laravel:10 · 11
Older releases:5
License:MIT
Last Updated:Aug 27, 2024
Links: GitHub  ·  Packagist
Maintainer: antriver

Laravel Multi Cache

Allows you to use multiple Laravel cache stores as one. Retrieves items from the first cache they are found in.

An example use is to have an array cache and Redis cache. Fetch items from the array cache first (faster), and from Redis if the key was not found. The value will be stored in the array cache if it was found in Redis.

Installation

composer require antriver/laravel-multi-cache

Add this to your config/app.php providers array:

Antriver\LaravelMultiCache\MultiStoreServiceProvider::class

Add the multi store to your config/cache.php stores array:

    'stores' => [
        'array' => [
            'driver' => 'array',
        ],
        'database' => [
            'driver' => 'database',
            'table'  => 'cache',
            'connection' => null,
        ],
        'redis' => [
            'driver' => 'redis',
            'connection' => 'redis-cache',
        ],
        'multi' => [
            'driver' => 'multi',
            'stores' => [
                'array',
                'redis',
                'database'
            ],
            'sync_missed_stores' => true,
        ]
    ],

Set your CACHE_DRIVER in .env:

CACHE_DRIVER=multi

Usage

The cache implements the standard cache interface, so you use all the normal get() and put() methods.

get($key)

Returns the value from the first store $key is found in (in the order defined in stores). The value will be saved in any higher 'stores'. e.g. If the value is not found it array, but is in redis, the value from redis will be returned and put in array, but it will not be put in database. This behaviour can be disabled by setting sync_missed_stores => false in config.

put($key, $value, $minutes)

Stores an item in all of the stores.

All of the other methods (increment(), forget(), flush(), etc.) perform the operation on all of the stores.

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

644,549,754 9,698
laravel/framework

The Laravel Framework.

598,760,099 34,966
laravel/tinker

Powerful REPL for the Laravel framework.

507,193,856 7,441
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

423,477,751 607
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

403,217,078 4,664

Version History

Version Released PHP Laravel License
10.1.0 >=8.1 ^10.0 || ^11.0 MIT
10.0.0 >=7.4 ^10.0 MIT
1.0.0 5.*.* MIT