antriver / laravel-multi-cache
在 Laravel 中组合多个缓存
10.1.0
2024-08-27 11:27 UTC
Requires
- php: >=8.1
- laravel/framework: ^10.0 || ^11.0
Requires (Dev)
- mockery/mockery: ^1.6
- orchestra/testbench: ^8.19
- phpunit/phpunit: ^10.5
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()
等)在所有存储上执行操作。