uspdev/cache

连接到缓存服务器的库

1.0.0 2021-04-07 23:14 UTC

This package is auto-updated.

Last update: 2024-09-27 21:44:02 UTC


README

用于缓存方法结果的库,通常是数据库查询。此库作为后端memcached的连接器。服务器在本地机器上运行。

可以在实例化类的方法和静态方法中使用。

数据根据传递给方法的方法参数存储在缓存中。更改参数将创建新的缓存。

默认情况下,缓存会在4小时后或memcached服务器重启后过期。

默认情况下,小于32字节的将不会缓存数据。

要求

  • PHP > 7.0
  • memcached
  • php-memcached

安装和配置

安装memcached服务器

  • 在ubuntu 1804,debian 9,debian 10上:使用apt install memcached安装memcached
  • /etc/memcached.conf中添加I = 5M行,将每个对象的大小增加到5MB或其他您认为合适的值
  • memcached(在ubuntu上)默认配置为使用约64MB的RAM(这不是一个硬性限制)。如果您的服务器支持且有需求,可以在配置文件中将-m 128改为默认值的两倍
  • 重启服务service memcached restart

注意:可以通过libmemcached-tools包获取命令行工具。

安装库

  • 对于ubuntu 1804,debian 9或debian 10,使用apt install php-memcached
  • 重启apache service apache2 reload
  • 将库作为依赖项安装composer require uspdev/cache

使用

实例化对象

数据库查询的典型情况

$pessoa = new Pessoa();
$lista = $pessoa->lista('nome');

使用缓存,查询如下

use Uspdev\Cache\Cache;

$pessoa = new Pessoa();
$cache = new Cache($pessoa);
$lista = $cache->getCached('lista',['nome']);

$lista = $cache->getCached('lista','nome');

这意味着如果方法person->Lista()接受多个参数,您可以传递参数列表作为数组,缓存将将其转换为参数列表。

静态方法

如果方法是静态的,则如下所示

use Uspdev\Cache\Cache;

$cache = new Cache();
$lista = $cache->getCached('Pessoa::lista',['nome']);

其他方法

要查看有关缓存的一些有用信息,请使用

$status = $cache->status();

如果您的应用程序已更改已缓存查询的内容,您必须使缓存无效,以免接收过时的数据。

$status = $cache->flush();

测试

运行一些测试以查看其功能。

php test/runtests.php

配置参数

如果您在一个使用缓存的项目中没有可用的memcached服务器,您可以完全禁用缓存,以便继续使用项目。

在开发环境中,也可能希望禁用缓存。

要禁用缓存,请定义以下环境变量或常量。

putenv('USPDEV_CACHE_DISABLE=1');

define('USPDEV_CACHE_DISABLE', true);

这样,缓存库将仅对通过它的查询进行绕行。

使用环境变量将比使用可能在未来被删除的常量更可取。

要更改过期时间有两种方法

  • 通过环境变量(在实例化之前设置)
putenv('USPDEV_CACHE_EXPIRY=tempo_em_segundos');
  • 直接设置(在实例化之后)
$cache->expiry = tempo_em_segundos;

如果过期时间为0,则缓存永远不会过期。

您可以从数据大小定义缓存开始使用的大小。默认值是32字节,以便删除空返回值和一些错误消息。如果需要修改此大小,请使用

putenv('USPDEV_CACHE_SMALL=tamanho_em_bytes');

$cache->small = tamanho_em_bytes;