[Jedis] ZRANGE WITHSCORES
RedisのZSETに受信データを蓄積していくプログラムを書いた。
ZSETのScoreに受信日時(1970/01/01からのミリ秒)をセットしていて、日付を指定して受信データを抜き出せる設計にした。
で、テストするときに「最も過去のデータがいつ受信したのか知りたいなー」と思って調査。
Redisだと以下の方法で memberとscore を取得できる。
> ZRANGE key 0 0 WITHSCORES
日本語ドキュメントだと
値だけではなくて要素のスコアを返せるように WITHSCORES オプションを与えることもできます。Redisはデータをvalue1,score1,value2,score2,…,valueN,scoreNというリストの形で返します。しかしクライアントライブラリはデータをより適切な形で返すことも可能です。(このコマンドで一番良い形なのは2要素のタプルの配列だと思います)
ってあって、「Javaにタプルねーしなー、どうすっべかなー」と思ってたら redis.clients.jedis.Tuple
ってクラスがあった。
Jedisだと以下のように実装できる。
Set<Tuple> result = jedis.zrangeWithScores(key, 0, 0);
for (Tuple item : result) {
return item.getScore();
}
ふむ。簡単。
別に汎用的に使えるタプルのクラス、って訳ではなく、あくまでRedisのscoreとmemberを一緒に返す時に使うクラスってだけなので、Tuple
って名称は微妙だな。
コメント
コメントを投稿