[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 って名称は微妙だな。 参考 ソート済みセット型 — redis 2.0.3 documentation Java Code Example redis.clients.jedis.Tuple