sanchescom / laravel-cache-memory
内存缓存驱动。
1.1.1
2023-09-27 02:58 UTC
Requires
- php: ^7.3|^8.0
- ext-shmop: *
- ext-sysvsem: *
- illuminate/cache: ^8.0|^9.0|^10.0
- illuminate/support: ^8.0|^9.0|^10.0
Requires (Dev)
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.0
This package is auto-updated.
Last update: 2024-09-27 05:02:50 UTC
README
Laravel 缓存内存驱动程序,使用共享内存功能。
Shmop 是一组易于使用的函数集,允许 PHP 读取、写入、创建和删除 Unix 共享内存段。
共享内存是 UNIX 本地的 IPC1 机制。本质上,它是关于两个进程共享一个共同的内存段,它们可以同时从中读取并写入以相互通信。
锁和信号量用于确保原子访问,以便多个 PHP 进程可以安全地并发使用相同的共享内存。
安装
使用 Composer 在项目根目录中要求此包。
composer require sanchescom/laravel-cache-memory
Laravel 5.x
更新 composer 后,将 ServiceProvider 添加到 config/app.php
中的 providers 数组。
'providers' => [ ... Sanchescom\Cache\MemoryServiceProvider::class, ],
Lumen
更新 composer 后,将以下行添加到 bootstrap/app.php
中以注册 provider。
$app->register(Sanchescom\Cache\MemoryServiceProvider::class);
配置
将新驱动程序放入 config/cache.php
并设置内存的键和大小。
'memory' => [ 'driver' => 'memory', 'key' => env('MEMORY_BLOCK_KEY', 1), 'size' => env('MEMORY_BLOCK_SIZE', 900000), ],
在一个进程中将数据放入内存
<?php use Illuminate\Support\Facades\Cache; Cache::store('memory')->put('some_key', ['value' => 'text']);
从另一个进程获取它
<?php use Illuminate\Support\Facades\Cache; $data = Cache::store('memory')->get('some_key');
关于内存限制
当缓存接近大小限制时,将执行垃圾回收(通过删除过期的项目)。如果垃圾回收失败,无法将缓存大小降低到限制以下,则缓存将被无效化,并且底层内存段将被标记为删除。
内存不足将在日志中生成警告或通知,无论是否通过垃圾回收或段删除来解决。
注意: 存储为“永久”的项目可能在缓存达到大小限制时被删除。
重新创建内存块
重新创建内存块时,将使用 Laravel 配置文件中定义的最新大小限制。
手动标记内存段为删除
这有一些用例,例如现在想要刷新内存块而不是等待另一个“内存不足”事件。在这种情况下,您可能需要这样做
// the deletion will be managed by the OS kernel , and will happen at a future time Cache::store('memory')->getStore()->requestDeletion();
此用法不会触发任何警告或通知,因为这是一项故意采取的操作。