redis-ranking sorted set の sort order desc が機能しない。。。
( redis 2.4ではダメでしたが、2.6は問題なく動きました。)
sorted set で スコア昇順に並んでいるので
by nosort desc で取得出来ると思っていたらなぜかできない。
SORT sortedsetlist BY nosort
SORT sortedsetlist BY nosort DESC
SORT sortedsetlist BY nosort DESC
どちらも同じ・・・
ZREVRANGE sortedsetlist 0 -1 WITHSCORES
とかはちゃんとスコア降順になります。
by nosort DESCは絶対行けると思ってたけどダメだった。。。
zcount を調べてlimitで後ろから順に取るという裏技もあるけど・・・
ZCOUNT sortedsetlist -inf +inf
scoreをマイナスで入れるというパターンもあるけど・・・
それが一番分かりやすいかな・・・
と思ったけど2.4じゃなくて 2.6 だと行けるっぽいので 2.6 にしてみました。
scoreでsortできました!ということで sorted setでsort *** get *** を使いたい場合は、2.6が良いみたいです。
predisの書き方。predisのsortの書き方があまりなかったので残しておきます。
predisのところだけ
$this->redis = new \Predis\Client(array(
‘scheme’ => ‘tcp’,
‘host’=>$this->server,
‘port’=>$this->port ));
‘scheme’ => ‘tcp’,
‘host’=>$this->server,
‘port’=>$this->port ));
$data = $this->redis->sort(
$event_id.':’.$sorted_column, array(
‘by’=>’nosort’,
‘sort’=>’desc’,
‘limit’=>array($start,$count),
‘get’=>array($event_id.':*’) ));
2.6では、予定通りの結果になりました。