ますたろー日記

大阪から上京して7年。渋谷界隈で頑張ってます。

Redis.pmでZADDなどZ*コマンドは使えるか?

結論。使える。

CPAN(http://search.cpan.org/dist/Redis/lib/Redis.pm)のPODに
ZADDなどZ*コマンドの説明が書かれてなかったので、使えないのかな?と思いきや、
ググってみると自分と同じ疑問を持った人をstackoverflowで発見。

http://stackoverflow.com/questions/13048438/redis-perl-library-how-to-use-sorted-sets

回答によると、PODに書かれてないものもあるけど、
すべてのAPIは実装されているとのこと。
AUTOLOADで実装されてるので、
モジュールのソースコードの中をZ*コマンドの名前で検索してもヒットしない。

パラメータなどはRedisのドキュメント読みなさいとのこと。

こんな感じで使える。

use strict;
use warnings;

use Redis;

my $redis = Redis->new;

# ソート済みセットにメンバを追加
# 第二引数の100にしてるところはint型の任意の値
$redis->zadd('key', 100, 'member');

# ソート済みセットからメンバを削除
$redis->zrem('key', 'member');

# ソート済みセットから、スコアの昇順に並んだメンバの配列を取得
# 第二引数と第三引数は取得する要素の開始番号と終了番号
my @list = $redis->zrange('key', 0, 10000);

# ソート済みセットから、スコアの昇順に並んだメンバとスコアのハッシュを取得
# 第四引数に'withscores'を渡すとメンバとスコアが返るようになる。
my %list = $redis->zrange('key', 0, 10000, 'withscores');