tmd/laravel-multi-cache

此包已被放弃,不再维护。作者建议使用 antriver/laravel-multi-cache 包。

在 Laravel 中结合多个缓存

10.1.0 2024-08-27 11:27 UTC

This package is auto-updated.

Last update: 2024-08-27 12:13:01 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() 等)在所有存储上执行操作。