LevelDB (leveldb – a fast and lightweight key/value database library) 是 Google 开发非常快速的 key-value 储存的函式库, 效能看起来相当不错: LevelDB Benchmarks, 且 LevelDB 的资料, 都会经过 Snappy 压缩, 所以资料也会比较小.
注: 下述安装环境为 Debian / Ubuntu Linux
于 PHP 增加 Google LevelDB 的 Extension
有 LevelDB 的 Source code, 再来找 PHP 的 ext 是否有人写, 于是就找到: leveldb for php
也正好找到此篇有人已经有做过编译: 从原始码编译 Google LevelDb 的 PHP 扩展, 下述步骤摘录自此篇.
安装、编译步骤
- BUILD=/usr/local/
- # 编译安装 LevelDB
- svn export http://leveldb.googlecode.com/svn/trunk/ leveldb
- cd $BUILD/leveldb
- make -j8 OPT=”-O2 -DNDEBUG -fPIC”
- # 编译安装 php-leveldb ext
- git clone git://github.com/arraypad/php-leveldb.git
- cd $BUILD/php-leveldb
- phpize
- ./configure –with-leveldb=$BUILD/leveldb
- make -j8
- make test
- make install
- # 于 Apache 的 PHP 设定 leveldb.so (extenstion)
- vim /etc/php5/cli/conf.d/leveldb.ini # 内容如下述
extension=leveldb.so - /etc/init.d/apache2 restart # 到此就可以开始使用 LevelDB 囉~
LevelDB 于 PHP 的操作与使用范例
范例可于 php-leveldb 的 tests 里面找到: basic.phpt (下述参考整理自此档案)
范例
<?php if (!extension_loaded('leveldb')) { die('skip leveldb not loaded'); } $path = '/tmp/leveldb.test'; $db = new LevelDb($path); echo "* setting (foo=bar): \n"; var_dump($db->set('foo', 'bar')); // bool(true) echo "* getting (foo): \n"; var_dump($db->get('foo')); // string(3) "bar" echo "* delete (foo): \n"; var_dump($db->delete('foo')); // bool(true) echo "* getting (foo): \n"; var_dump($db->get('foo')); // bool(false) ?>