Cache缓存
webman/cache é um componente de cache desenvolvido com base no symfony/cache, compatível com ambientes de coroutine e não corrotina, e suporta pools de conexão.
注意
当前手册为 webman v2 版本,如果您使用的是webman v1版本,请查看 v1版本手册
Instalação
composer require -W webman/cache
Exemplo
<?php
namespace app\controller;
use support\Request;
use support\Cache;
class UserController
{
public function db(Request $request)
{
$key = 'test_key';
Cache::set($key, rand());
return response(Cache::get($key));
}
}
Localização do arquivo de configuração
O arquivo de configuração está em config/cache.php
, se não existir, crie-o manualmente.
Conteúdo do arquivo de configuração
<?php
return [
'default' => 'file',
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache')
],
'redis' => [
'driver' => 'redis',
'connection' => 'default'
],
'array' => [
'driver' => 'array'
],
'apcu' => [
'driver' => 'apcu'
]
]
];
stores.driver
suporta 4 tipos de driver, file, redis, array, apcu.
driver de arquivo
Este é o driver padrão, não depende de outros componentes, suporta compartilhamento de dados de cache entre processos, não suporta compartilhamento de dados de cache entre múltiplos servidores.
driver de array
Armazenamento em memória, o melhor desempenho, mas consome memória, não suporta compartilhamento de dados entre processos e servidores, e perde os dados após a reinicialização do processo, geralmente usado para projetos com pequeno volume de dados em cache.
driver de apcu
Armazenamento em memória, quase o mesmo desempenho que o array, suporta compartilhamento de dados de cache entre processos, não suporta compartilhamento de dados entre múltiplos servidores, e perde os dados após a reinicialização do processo, geralmente usado para projetos com pequeno volume de dados em cache.
需要安装并启用 APCu 扩展;不建议用于频繁进行缓存写入/删除的场景,会导致明显的性能下降。
driver redis
Depende do componente webman/redis, suporta compartilhamento de dados de cache entre processos e servidores.
stores.redis.connection
stores.redis.connection
corresponde à chave no config/redis.php
. Ao usar o redis, reutiliza a configuração do webman/redis
, incluindo a configuração do pool de conexão.
建议在config/redis.php
增加一个独立的配置,例如cache类似如下
<?php
return [
'default' => [
'password' => 'abc123',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 0,
],
'cache' => [ // <==== 新增
'password' => 'abc123',
'host' => '127.0.0.1',
'port' => 6379,
'database' => 1,
'prefix' => 'webman_cache-',
]
];
Depois, defina stores.redis.connection
como cache
, a configuração final do config/cache.php
ficará assim:
<?php
return [
'default' => 'redis', // <====
'stores' => [
'file' => [
'driver' => 'file',
'path' => runtime_path('cache')
],
'redis' => [
'driver' => 'redis',
'connection' => 'cache' // <====
],
'array' => [
'driver' => 'array'
]
]
];
Mudando o armazenamento
Você pode trocar o store manualmente usando o seguinte código, para usar diferentes drivers de armazenamento, como por exemplo:
Cache::store('redis')->set('key', 'value');
Cache::store('array')->set('key', 'value');
提示
O nome das chaves é restrito pelo PSR6 e não pode conter nenhum dos caracteres{}()/\@:
. No entanto, até o momento (symfony/cache
7.2.4 ), isso pode ser temporariamente ignorado configurandozend.assertions=-1
no PHP ini.
Usando outros componentes de Cache
O componente ThinkCache pode ser usado como referência em Outros bancos de dados