soupmix / cache-base
Requires
- php: ^7.3 | ^8.0
- psr/simple-cache: ~1.0
Provides
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)