redisのハイレベルラッパー、redbackはけっこう良い。CappedList使ってみた

visionmediaさんが推しているからなのか? node.jsとredisの相性が良い理由は全く把握していないけど、node.jsでライブラリ、ドキュメントが充実しているKVSはredisだった。

redisは、リスト、ハッシュ、集合のデータ構造を保存できるから、そういうデータ構造使おうとすると、ハイレベルなラッパーがあった方がやっぱり使いやすい。
redbackの良いところは、redisの基本データ構造をサポートするだけでなく、それらに色々な機能を追加したデータ構造も実装してくれているところ。あと自分で定義できるところ。

ドキュメントは、この自動生成されたやつしか見当たらず。この形式検索できないしあんまり見易くないと思うんだけど、どうですか? (RubyのRDocのが良いなあ。)
http://redbackjs.com/api.html

// redis-nodeパッケージに依存しているけど、redbackだけrequireして使える
var redback = require('redback').createClient();
// redis-nodeを明示的にrequireしておいて、色々設定しておいてから
// redbackに渡すこともできる
var redis = require('redis'),
    redback = require('redback');

// redisの設定
redis.debug_mode = true;

redis = redis.createClient();
redback = redback.createClient(redis);

// redback.client で、redis-nodeのクライアントが返る
// redis == redback.client
redback.client.on('error', function(err) {
  console.log(err);
});

CappedList
保存するデータの数を制限するリスト。
データの数が制限に達していた場合、自動的にあふれたデータを削除してくれる。

var list = redback.createCappedList('unko', 3); // キーが'unko'、データ数の制限が3のリスト

list.push('year!');
list.push('oh-year!');
list.push('hey-year!');
list.values(function(err, values) { console.log(values) });
// ['year!', 'oh-year!', 'hey-year!']

list.push('so-i-year!');
list.values(function(err, values) { console.log(values) });
// ['oh-year!', 'hey-year!', 'so-i-year!']

list.unshift('ha-i-year!');
list.values(function(err, values) { console.log(values) });
// ['ha-i-year!', 'oh-year!', 'hey-year!']

list.get(1, 2, function(err, values) { console.log(values) });
// ['oh-year!', 'hey-year!']
// さっき保存したCappedListをただのリストとして取ることもできる。
var list = redback.createList('unko');