fire015 / flintstone

使用平面文件存储的PHP键值数据库

资助包维护!
fire015

v2.3.0 2021-01-20 10:36 UTC

This package is auto-updated.

Last update: 2024-09-09 11:30:48 UTC


README

Total Downloads Build Status

使用平面文件存储的PHP键值数据库。

特性包括

  • 内存高效
  • 文件锁定
  • 缓存
  • Gzip压缩
  • 易于使用

安装

安装Flintstone最简单的方式是通过 Composer。运行以下命令来安装。

composer require fire015/flintstone
<?php
require 'vendor/autoload.php';

use Flintstone\Flintstone;

$users = new Flintstone('users', ['dir' => '/path/to/database/dir/']);

要求

  • PHP 7.3+

数据类型

Flintstone可以存储任何可以格式化为字符串的数据类型。默认情况下,它使用serialize()。有关更多详细信息,请参阅更改格式化程序

选项

使用示例

<?php

// Load a database
$users = new Flintstone('users', ['dir' => '/path/to/database/dir/']);

// Set a key
$users->set('bob', ['email' => 'bob@site.com', 'password' => '123456']);

// Get a key
$user = $users->get('bob');
echo 'Bob, your email is ' . $user['email'];

// Retrieve all key names
$keys = $users->getKeys(); // returns array('bob')

// Retrieve all data
$data = $users->getAll(); // returns array('bob' => array('email' => 'bob@site.com', 'password' => '123456'));

// Delete a key
$users->delete('bob');

// Flush the database
$users->flush();

更改格式化程序

默认情况下,Flintstone将使用PHP的serialize函数来编码/解码数据,但你可以使用自己的类来覆盖此行为(如果你更喜欢的话)。

只需确保它实现了Flintstone\Formatter\FormatterInterface,然后你可以将其作为formatter选项提供。

如果你希望使用JSON作为格式化程序,Flintstone已经按照以下示例提供

<?php
require 'vendor/autoload.php';

use Flintstone\Flintstone;
use Flintstone\Formatter\JsonFormatter;

$users = new Flintstone('users', [
    'dir' => __DIR__,
    'formatter' => new JsonFormatter()
]);

更改缓存

为了加速数据检索,Flintstone可以将get()的结果存储在缓存存储中。默认情况下,它使用一个简单的数组,这个数组只在Flintstone对象存在期间持续。

如果你想使用自己的缓存存储(如Memcached),你可以传递一个类作为cache选项。只需确保它实现了Flintstone\Cache\CacheInterface