soupmix/cache

提供PSR-16 Simple Cache接口的无框架实现

1.1 2022-12-24 03:46 UTC

This package is auto-updated.

Last update: 2024-08-24 07:51:49 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

Soupmix Cache提供了PSR-16 Simple Cache接口的无框架实现。

1. 安装并连接到服务

建议您使用Composer安装Soupmix Cache适配器。

安装
$ composer require soupmix/cache

1.1 Redis

连接到Redis(单个实例)服务
require_once '/path/to/composer/vendor/autoload.php';

$rConfig = ['host'=> "127.0.0.1"];
$handler = new Redis();
$handler->connect(
    $rConfig['host']
);

$cache = new Soupmix\Cache\RedisCache($handler);

1.2 Memcached

连接到Memcached服务
require_once '/path/to/composer/vendor/autoload.php';

$config = [
    'bucket' => 'test',
    'hosts'   => ['127.0.0.1'],
;
$handler = new Memcached($config['bucket']);
$handler->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE, true);
$handler->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
if (!count($handler->getServerList())) {
    $hosts = [];
    foreach ($config['hosts'] as $host) {
        $hosts[] = [$host, 11211];
    }
    $handler->addServers($hosts);
}

$cache = new Soupmix\Cache\MemcachedCache($handler);

1.3 APCu

用法
require_once '/path/to/composer/vendor/autoload.php';

$cache = new Soupmix\Cache\APCUCache();

1.4 PHP数组

用法
require_once '/path/to/composer/vendor/autoload.php';

$cache = new Soupmix\Cache\ArrayCache();

2. 在缓存中持久化数据,通过一个具有可选过期TTL时间的键唯一引用。

$cache->set($key, $value, $ttl);

@param string $key:要存储的项目键

@param mixed $value:要存储的项目值

@param null|integer|DateInterval $ttl:可选。此项目的TTL值。如果没有发送值且驱动程序支持TTL,则库可能为其设置默认值,或让驱动程序处理。预定义数据区间:TTL_MINUTE,TTL_HOUR,TTL_DAY。

@return bool 成功返回true,失败返回false

$cache->set('my_key, 'my_value', TTL_DAY);

// returns bool(true)

3. 确定项目是否存在于缓存中。

$cache->has($key);

@param string $key:要删除的项目唯一缓存键

@return bool 成功返回true,失败返回false

$cache->has('my_key');

// returns bool(true)

4. 从缓存中获取值。

$cache->get($key, default=null);

@param string $key:此项目在缓存中的唯一键 @return mixed 缓存中项目的值,或缓存未命中时返回null

$cache->get('my_key');

// returns  string(8) "my_value"

5. 通过其唯一键从缓存中删除项目

$cache->delete($key);

@param string $key:要删除的项目唯一缓存键

@return bool 成功返回true,失败返回false

$cache->delete('my_key');

// returns bool(true)

6. 在缓存中持久化一组键 => 值对,具有可选的TTL。

$cache->setMultiple(array $items);

@param array|Traversable $items:用于多集操作的键 => 值对的数组。

@param null|integer|DateInterval $ttl:可选。从当前时间起项目将在缓存中存在的秒数。如果此值为null,则缓存后端将回退到其默认行为。

@return bool 成功返回true,失败返回false

$items = ['my_key_1'=>'my_value_1', 'my_key_2'=>'my_value_2'];
$cache->setMultiple($items);

// returns bool(true)

7. 通过其唯一键获取多个缓存项。

$cache->getMultiple($keys, $default=null);

@param array|Traversable $keys:可以一次性获取的键列表。

@return array 键 => 值对的数组。不存在的或过期的缓存键将具有null值。

$keys = ['my_key_1', 'my_key_2'];
$cache->getMultiple($keys);
/*
returns array(2) {
          ["my_key_1"]=>
          string(3) "my_value_1"
          ["my_key_2"]=>
          string(3) "my_value_2"
        }
*/

8. 在单个操作中删除多个缓存项。

$cache->deleteMultiple($keys);

@param array|Traversable $keys:要删除的基于字符串的键数组

@return bool 成功返回true,失败返回false

$keys = ['my_key_1', 'my_key_2'];
$cache->deleteMultiple($keys);
 /*
 returns bool(true)
 */

9. 清除整个缓存的所有键(刷新)

@return bool 成功返回true,失败返回false

$cache->clear();
// returns bool(true)