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');