uspdev / cache
连接到缓存服务器的库
1.0.0
2021-04-07 23:14 UTC
Requires
- php: >=7.0
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;