sanchescom/laravel-cache-memory

内存缓存驱动。

1.1.1 2023-09-27 02:58 UTC

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();

此用法不会触发任何警告或通知,因为这是一项故意采取的操作。