garyr / memento
轻量级缓存库
1.1.5
2019-08-12 19:42 UTC
Requires
- php: >=5.3.3
- symfony/console: ~2.5 || ~2.6
Requires (Dev)
- phpunit/phpunit: 4.1.3
- predis/predis: v0.8.5
README
Memento
Memento 是一个用于文件、memcache 或 redis 存储引擎的轻量级 PHP 缓存包装器。支持简单的键 => 数据对象存储和失效,以及基于组的操作。请注意,基于组的操作总是同时过期,因此仅在需要同时执行失效操作时才应使用。
设置
$file = new Memento\Engine\File( array( 'path' => '/tmp/memento', // defaults to sys_get_temp_dir() . '/memento' ) ); // client instance (defaults to file based storage) $memento = new Memento\Client($file);
Memcache 设置
$memcache = new Memento\Engine\Memcache( array( 'host' => '127.0.0.1', 'port' => 11211 ) ); // client instance $memento = new Memento\Client($memcache);
Redis 设置
$redis = new Memento\Engine\Redis( array( 'host' => '127.0.0.1', 'port' => 6379 ) ); // client instance $memento = new Memento\Client($redis);
存储示例
// single key store request $memento->store(new Memento\Key('com.example.key'), array('mydata')); $groupKey = new Memento\Group\Key('com.example.group1'); // group key store request (multiple keys per group key) $memento->store( $groupKey, new Memento\Key('com.example.key1'), array('mydata') ); $memento->store( $groupKey, new Memento\Key('com.example.key2'), array('foo' => 'bar') );
检索示例
// single key retrieve request $data = $memento->retrieve(new Memento\Key('com.example.key')); $groupKey = new Memento\Group\Key('com.example.group1'); // group key retrieve request $data = $memento->retrieve( $groupKey, new Memento\Key('com.example.key1') ); $data = $memento->retrieve( $groupKey, new Memento\Key('com.example.key2') );
失效示例
// single key invalidate request $memento->invalidate(new Memento\Key('com.example')); // group key store request (invalidate a group in a single operation) $memento->invalidate(new Memento\Group\Key('com.example.group1'));
分片
对于非基于文件的引擎,分片只需要额外的主机。分片基于提供的数据键完成,并指向主机(参见 Memento\Engine\EngineAbstract)。
// redis sharding config example $redis = new Memento\Engine\Redis( array( array( 'host' => 'redis1.mydomain', 'port' => 6379 ), array( 'host' => 'redis2.mydomain', 'port' => 6379 ) ) ); // memcache sharding config example $memcache = new Memento\Engine\Memcache( array( array( 'host' => 'memcache1.mydomain', 'port' => 11211 ), array( 'host' => 'memcache2.mydomain', 'port' => 11211 ) ) );