soupmix / cache
提供PSR-16 Simple Cache接口的无框架实现
Requires
- php: ^8.0
- psr/simple-cache: ^2.0
Requires (Dev)
- doctrine/coding-standard: ^11.0
- php-coveralls/php-coveralls: ^2.4
- phpunit/phpcov: ^8.2
- phpunit/phpunit: ^9.5
Suggests
- ext-apcu: If you use Apcu, you need this extension
- ext-memcached: If you use Memcahced, you need extension
- ext-redis: If you use PhpRedis, you need this extension
Provides
- psr/simple-cache-implementation: ^1.0.1
README
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)