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クラス を使用してください。