antriver / laravel-multi-cache

在 Laravel 中组合多个缓存

10.1.0 2024-08-27 11:27 UTC

This package is auto-updated.

Last update: 2024-09-27 12:22:13 UTC


README

允许您将多个 Laravel 缓存存储作为一个使用。从它们首次找到的位置检索项目。

一个示例用途是有一个数组缓存和 Redis 缓存。首先从数组缓存中获取项目(更快),如果键未找到则从 Redis 中获取。如果在 Redis 中找到值,则将其存储在数组缓存中。

安装

composer require antriver/laravel-multi-cache

将此添加到您的 config/app.php providers 数组中

Antriver\LaravelMultiCache\MultiStoreServiceProvider::class

multi 存储添加到您的 config/cache.php stores 数组中

    '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,
        ]
    ],

.env 中设置您的 CACHE_DRIVER

CACHE_DRIVER=multi

用法

缓存实现了标准缓存接口,因此您可以使用所有正常的 get()put() 方法。

get($key)

从第一个找到 $key 的存储返回值(按 stores 中定义的顺序)。如果值在 array 中未找到,但在 redis 中找到,则返回 redis 中的值并将其放入 array,但它不会放入 database。通过在配置中设置 sync_missed_stores => false 可以禁用此行为。

put($key, $value, $minutes)

在所有存储中存储一个项。

所有其他方法(如 increment()forget()flush() 等)在所有存储上执行操作。