soupmix/cache-base

此软件包已被废弃,不再维护。作者建议使用 soupmix/cache 软件包代替。

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

1.0 2021-06-26 15:27 UTC

This package is auto-updated.

Last update: 2021-06-26 21:45:55 UTC


README

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

1. 安装并连接到服务

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

1.1 Redis

源代码

查看Github仓库

安装
$ composer require soupmix/cache-redis "~0.3"
连接到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

源代码

查看Github仓库

安装
$ composer require soupmix/cache-memcached "~0.3"
连接到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

源代码

查看Github仓库

安装
$ composer require soupmix/cache-apcu "~0.2"
使用方法
require_once '/path/to/composer/vendor/autoload.php';

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

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 array(2) {
           ["my_key_1"]=>
            bool(true)
           ["my_key_2"]=>
            bool(true)
         }
 */

9. 通过其步长值原子性地在缓存中增加值,步长默认为1。

$cache->increment($key, $step);

@param string $key:缓存项键

@param integer $step:增加的值,默认为1

@return int|bool 成功时返回新值,失败时返回false

$cache->increment('counter', 1);
// returns int(1)
$cache->increment('counter', 1);
// returns int(2)

重要提示

Memcached不会增加尚未设置的键。对于Memcached,您必须使用默认值设置键。

$cache->set('counter', 0);
// returns bool(true)
$cache->increment('counter', 1);
// returns int(1)

10. 通过其步长值原子性地在缓存中减少值,步长默认为1

$cache->decrement($key, $step);

@param string $key:缓存项键

@param integer $step:减少的值,默认为1

$cache->decrement('counter', 1);
// returns int(1)
$cache->decrement('counter', 1);
// returns int(0)

重要提示1

Memcached不会减少尚未设置的键。对于Memcached,您必须使用默认值设置键。

$cache->set('counter', 1);
// returns bool(true)
$cache->decrement('counter', 1);
// returns int(0)

重要提示2

Memcached不会减少到负值,并在0处停止,而Redis可以减少到负值,并设置-1、-2等...

11. 清空整个缓存的所有键(刷新)

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

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