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

どちらも同じ・・・

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

$data = $this->redis->sort(
$event_id.':’.$sorted_column, array(
‘by’=>’nosort’,
‘sort’=>’desc’,
‘limit’=>array($start,$count),
‘get’=>array($event_id.':*’) ));

2.6では、予定通りの結果になりました。

This entry was posted on 火曜日, 3月 19th, 2013 at 9:49 PM and is filed under php, redis. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.

Unityによるゲームを公開しております iOS/Android
https://itunes.apple.com/jp/app/lost-knight-3d-action/id900917032
https://play.google.com/store/apps/details?id=com.groundroad.runknight

各種開発支援・機能開発等小さいお仕事などもお請けしております。
unity開発支援, PHPシステム開発, javascript/html5 フロント開発, titanium mobileアプリ開発
お気軽にお問い合わせください
大崎・五反田近郊での対面でのお打ち合わせはいつでも可能です。