behance/nbd.php-cache

此包已被废弃且不再维护。没有建议的替代包。

Behance 缓存访问层

2.4.0 2018-08-30 18:45 UTC

This package is not auto-updated.

Last update: 2018-09-30 19:01:22 UTC


README

Build Status Dependency Status

behance/nbd.php-cache

提供与 memcache 服务器通信的基础,抽象了 Memcache、Memcached 和 Redis PECL 扩展之间的接口差异

目标

  1. 最小化依赖,适用于各种不同的环境。
  2. 迁移工具:使用单个接口灵活地在 MemcacheMemcachedRedis PECL 扩展之间切换
  • 自动检测 PECL 扩展,并按优先级顺序使用它们(Memcached > Memcache > Redis)
  1. 尽量屏蔽连接和管理逻辑的实现者
  2. 支持有限的缓存“事务”功能:就像 ACID 数据库事务一样,只对单个进程可见的读取 + 写入,直到提交。对于遵循实际数据库事务的嵌入式缓存进程很有用。
  3. 通过事件提供深入的洞察

实现说明

  • 截至编写时,Redis 在配置的 时刻 建立连接。直到已发布的 PECL 扩展中完全实现了延迟实例化(里程碑 3.1.0),初始连接错误被不幸地吞没,以便像 memcache/memcached 一样工作。

使用方法

use Behance\NBD\Cache;

$config = [
  [
    'host' => 'cache1.com',
    'port' => 11211
  ],
  [
    'host' => 'cache2.com',
    'port' => 11212
  ],
  //[
  //  ... add as many servers as necessary
  //]
];

根据 memcache/memcached/redis 扩展的存在创建适配器

$cache = Cache\Factory::create($config);

或者,创建特定类型的实例

$cache = Cache\Factory::create($config, Factory::TYPE_REDIS);
$cache = Cache\Factory::create($config, Factory::TYPE_MEMCACHE);
$cache = Cache\Factory::create($config, Factory::TYPE_MEMCACHED);

检索单个值

$cache->get('abcdefg');

检索多个值

$cache->getMulti(['abcdefg', 'hijklmn']); // Result preserves order

测试

单元测试,需要 memcachememcachedredis 插件

  1. composer install
  2. ./vendor/bin/phpunit

(推荐) 集成测试:利用 docker / docker-compose,使用实际的 memcache 和 redis 服务容器)

  1. (在 PHP 7.1 上) docker-compose build seven && docker-compose run sevenone
  2. (在 PHP 7.2 上) docker-compose build seven && docker-compose run seventwo

操作

方法说明
get( $key )检索 $key 的值
getMulti( array $keys )将返回所有定义的键的有序列表,如果单个键缺失则设置为 null
set( $key, $value, $ttl = AdapterInterface::EXPIRATION_DEFAULT )将 $key 保存到 $value
add( $key, $value, $ttl = AdapterInterface::EXPIRATION_DEFAULT )将 $key 保存到 $value,只有当 $key 不存在时才保存
replace( $key, $value, $ttl = AdapterInterface::EXPIRATION_DEFAULT )只有当 $key 已存在时,才将 $value 保存到 $key
increment( $key, $value = 1 )将 $key 增加 $value
decrement( $key, $value = 1 )将 $key 减少 $value
delete( $key )从服务器中删除单个键
deleteMulti( array $keys )从服务器中删除一组键
beginBuffer模拟事务,为当前连接提供一致的状态
rollbackBuffer结束事务,不提交结果
commitBuffer结束事务,提交结果
flush()从服务器(s)删除所有键
getAllKeys()从服务器(s)检索完整的键列表
getStats()从服务器(s)检索使用情况统计信息
bind( $event_name, callable $handler )提供针对缓存特定事件的处理器
getBoundEvents()获取已绑定事件的列表
close()断开与活动连接