Redis 最小値と最大値を指定してスコアのメンバーを降順で取得する

Redis 最小値と最大値を指定してスコアのメンバーを降順で取得する

Redisで、最小値と最大値を指定してスコアのメンバーを降順で取得する手順を記述してます。「zrevrangebyscore」を使用して取得します。「withscores」を使うとスコアも取得できます。

環境

  • OS CentOS Stream release 9
  • Redis 6.2.6

手順

最小値と最大値を指定してスコアのメンバーを降順で取得するには、「zrevrangebyscore」を使用します。

zrevrangebyscore キー名 最大値 最小値

実際に、スコアを設定してから取得してみます。

127.0.0.1:6379> zadd zs1 1 a 3 b 5 c 7 d 9 e
(integer) 5

最小値と最大値を指定して取得します。

127.0.0.1:6379> zrevrangebyscore zs1 5 0
1) "c"
2) "b"
3) "a"

127.0.0.1:6379> zrevrangebyscore zs1 15 0
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"

スコアの値が最小値と最大値の範囲で降順に取得されていることが確認できます。

「inf」を指定すると、全て降順で取得されます。

127.0.0.1:6379> zrevrangebyscore zs1 +inf -inf
1) "e"
2) "d"
3) "c"
4) "b"
5) "a"

最小値と最大値を指定しないとエラーが発生します。

> zrevrangebyscore zs1
(error) ERR wrong number of arguments for 'zrevrangebyscore' command

スコアも取得

「withscores」を使用すると、スコアも取得することが可能です。

127.0.0.1:6379> zrevrangebyscore zs1 +inf -inf withscores
 1) "e"
 2) "9"
 3) "d"
 4) "7"
 5) "c"
 6) "5"
 7) "b"
 8) "3"
 9) "a"
10) "1"

件数を指定

「limit」を使用すると取得する件数を設定することができます。

127.0.0.1:6379> zrevrangebyscore zs1 +inf -inf withscores limit 0 3
1) "e"
2) "9"
3) "d"
4) "7"
5) "c"
6) "5"