KVSの利用 | Key-Value-Store

KVSパッケージは、キーでデータの格納(更新)・取得・削除を行うデータストアです。バックエンドには APC, Memcaceh, XML が使用できます。

インターフェイスは下記の通りで、非常にシンプルなものとなっています。
interface Sabel_Kvs_Interface
{
  public function read($key);
  public function write($key, $value, $timeout = 0);
  public function delete($key);
}
write()メソッド の第3引数の $timeout は、そのデータの有効期間を秒数で指定します。例えば write("a", "data", 600) とした場合、明示的に delete() しなくても、10分経過後にはデータが消滅するか取得できなくなります。

delete()メソッド は指定されたキーのデータを削除するとともに、その削除されたデータを返します。

※このパッケージの唯一の注意点は、false(論理型)を格納できないことです。falseは常にnullとして返されます。

APC

Sabel_Kvs_Apc はデータ格納先にAPC(メモリ)を使用します。このクラスはキーのプレフィックスとしてサービスのドメインを使用します。これにより、一つのWebサーバで複数のサービスが稼働している環境でこのクラスを使用してもサービス間でキーが衝突しないようになっています。
$kvs = Sabel_Kvs_Apc::create();

Memcache

Sabel_Kvs_Memcache はデータ格納先に Memcachedサーバ を使用します。このクラスは Sabel_Kvs_Apc と同様、キーレフィックスとしてサービスのドメインを使用します。インスタンスを生成する create()メソッド の第1引数は Memcachedサー バのホスト名(IPアドレス)、第2引数はポート番号となっています。それぞれ省略した場合は localhost, 11211が使用されます。
$kvs = Sabel_Kvs_Memcache::create("memcache.example.com", 22122);

XML

Sabel_Kvs_Xml はデータ格納先にファイル(XML文書)を使用します。XML文書ではありますが他のクラスと同じ振る舞いとするめに、シリアライズされたデータを格納します。そのため人が認識・編集しやすい内容とはならないことに注意してください。
create()メソッド の引数には、データを格納するXML文書のファイルパスを指定します。
$kvs = Sabel_Kvs_Xml::create("/path/to/kvs.xml");
このクラスの実装は全ての操作(読み取り・書き込み・削除)においてファイルロックを使用します。パフォーマンスが重要であれば Sabel_Kvs_Apc や Sabel_Kvs_Memcacheクラス を使用してください。