xtfer / keyparty
使用JSON文件进行存储的键值存储。
0.3.2
2014-05-14 10:32 UTC
Requires
- php: >=5.4.0
- knplabs/gaufrette: 0.2.*@dev
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-28 15:03:19 UTC
README
KeyParty是一个使用JSON文件进行存储的简单键值存储,适用于PHP 5.4及以上版本。
// Start KeyParty and add a JSON Jar to store data in. $keyparty = new \Keyparty\KeyParty()->addJar('test'); // Create some data to store. $my_data = array('foo', 'bar'); // Set the data $keyparty->set('test', 'some_key', $my_data);
功能
- 简单的接口(get(),set(),empty()等)用于从键值存储中添加和删除数据
- 可更换的后端("jars")(使用相同的接口使用多个键值存储)
- 可更换的缓存和数据验证后端
- 包含JSON平面文件键值存储
- 良好的测试覆盖率
完整示例
示例
// Start KeyParty and add a JSON Jar to store data in. $keyparty = new \Keyparty\KeyParty()->addJar('test'); // Create some data to store. $my_data = array('foo', 'bar'); // Set the data $keyparty->set('test', 'some_key', $my_data); // Set data without overwriting existing data. // This will throw a RecordExistsException... $keyparty->set('test', 'some_key', $my_data); // You can also do it this way, however this won't use Object Converters, so you may lose some functionality, such as the ability to return properly classed objects from the JSON store. $jar = $keyparty->useJar('test'); $jar->insert('some_key', $my_data); // or $jar->update('some_key', $my_data); // or $jar->upsert('some_key', $my_data); // Get your data back $result = $keyparty->get('test', 'some_key'); // or $result = $jar->select('some_key');
安装和依赖关系
KeyParty需要Gaufrette,但仅当您打算使用默认的JSON存储时。如果您计划编写自己的适配器,则不需要此依赖项。
使用Composer安装所有这些组件是最简单的方法。KeyParty通过Packagist提供。
{
"require": {
"xtfer/keyparty": "0.3.*"
}
}
关于JSON Jar
默认情况下,KeyParty将数据存储在平面文件JSON数据存储中。此存储旨在用于快速原型设计、简单性和便携性。
- 平面文件,每个键值存储一个文件。
- 使用提供的ObjectConverter(即默认配置)时,可以存储和重建类似于PHP serialize()的对象
- 自动创建键值存储
JSON Jar有一些限制
- 数据存储在磁盘上的文件中,并且仅按请求缓存。您不应为同一存储(来自同一KeyParty实例)的两个读取操作两次击中磁盘(从同一KeyParty实例),但目前没有其他缓存层。
- 每次读取都加载整个文件
- 每次插入都加载和写入整个文件
- 存储不是事务安全的。没有日志记录和回滚。
- JSON键不能是整数。没有序列键概念。所有项目都必须有有效的非整数键。
其他键值存储
KeyParty使用两个类来定义键值存储,一个JarType和一个StoreAdapter。JarType定义了Jar到KeyParty的映射,返回正确的序列化器、缓存、验证器和存储适配器。存储适配器处理存储实例和数据的确切创建和删除。
如果您希望创建自己的类型和适配器,请查看JsonStoreAdapter和JsonJarType。请注意,当前类结构可能在不久的将来进行清理。
欢迎为新的存储类型提交拉取请求。
一旦添加了正确的类,您必须使用registerStore()方法将存储注册到KeyParty中。
免责声明
对于使用KeyParty和任何打包的键值存储导致的数据丢失不承担任何责任。您完全自行承担使用KeyParty的风险。