Redis リストから指定したインデックス番号の範囲の値を取得する

Redis リストから指定したインデックス番号の範囲の値を取得する

Redisで、リストから指定したインデックス番号の範囲の値を取得する手順を記述してます。「lrange」で開始位置と終了位置を指定することで可能です。

環境

  • OS CentOS Stream release 9
  • Redis 7.0.5

手順

リストから指定したインデックス番号の範囲の値を取得するには、「lrange」を使用します。

※インデックスは「0」から始まり、値にマイナスを指定すると後方から取得します。

lrange キー名 開始インデックス番号 終了インデックス番号

実際に、以下のリストを作成してインデックス番号で範囲を指定して値を取得してみます。

127.0.0.1:6379> rpush list1 "aaa"
(integer) 1

127.0.0.1:6379> rpush list1 "bbb"
(integer) 2

127.0.0.1:6379> rpush list1 "ccc"
(integer) 3

127.0.0.1:6379> rpush list1 "ddd"
(integer) 4

127.0.0.1:6379> rpush list1 "eee"
(integer) 5

インデックス番号で範囲を指定して取得してみます。

127.0.0.1:6379> lrange list1 0 2
1) "aaa"
2) "bbb"
3) "ccc"

127.0.0.1:6379> lrange list1 1 2
1) "bbb"
2) "ccc"

127.0.0.1:6379> lrange list1 1 4
1) "bbb"
2) "ccc"
3) "ddd"
4) "eee"

範囲を超えている場合は全て取得されます。

127.0.0.1:6379> lrange list1 0 100
1) "aaa"
2) "bbb"
3) "ccc"
4) "ddd"
5) "eee"

マイナスを指定

マイナスを指定すると、後方から取得されていきます。
※一番最後が「-1」になります。

127.0.0.1:6379> lrange list1 1 -1
1) "bbb"
2) "ccc"
3) "ddd"
4) "eee"

127.0.0.1:6379> lrange list1 1 -2
1) "bbb"
2) "ccc"
3) "ddd"

127.0.0.1:6379> lrange list1 1 -3
1) "bbb"
2) "ccc"

全て取得する場合は、これを使用して「0」から「-1」の範囲を指定します。

127.0.0.1:6379> lrange list1 0 -1
1) "aaa"
2) "bbb"
3) "ccc"
4) "ddd"
5) "eee"