behance / nbd.php-cache
此包已被废弃且不再维护。没有建议的替代包。
Behance 缓存访问层
2.4.0
2018-08-30 18:45 UTC
Requires
- php: >=7.1
- symfony/event-dispatcher: ~2.6 || ~3.0
Requires (Dev)
- phpunit/phpunit: ~6.0
- squizlabs/php_codesniffer: ^2.5.0
README
behance/nbd.php-cache
提供与 memcache 服务器通信的基础,抽象了 Memcache、Memcached 和 Redis PECL 扩展之间的接口差异
目标
- 最小化依赖,适用于各种不同的环境。
- 迁移工具:使用单个接口灵活地在
Memcache
、Memcached
和Redis
PECL 扩展之间切换
- 自动检测 PECL 扩展,并按优先级顺序使用它们(Memcached > Memcache > Redis)
- 尽量屏蔽连接和管理逻辑的实现者
- 支持有限的缓存“事务”功能:就像 ACID 数据库事务一样,只对单个进程可见的读取 + 写入,直到提交。对于遵循实际数据库事务的嵌入式缓存进程很有用。
- 通过事件提供深入的洞察
实现说明
- 截至编写时,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
测试
单元测试,需要 memcache
、memcached
和 redis
插件
composer install
./vendor/bin/phpunit
(推荐) 集成测试:利用 docker / docker-compose,使用实际的 memcache 和 redis 服务容器)
- (在 PHP 7.1 上)
docker-compose build seven && docker-compose run sevenone
- (在 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() | 断开与活动连接 |