Redis set型のデータをランダムに取得する

Redis set型のデータをランダムに取得する

Redisで、set型のデータをランダムに取得する手順を記述してます。「srandmember」にキー名と取得したい件数を指定するだけで可能です。ここでは実際に実行した結果を掲載してます。

環境

  • OS CentOS Stream release 9
  • Redis 7.0.5

手順

set型のデータをランダムに取得するには、「srandmember」を使用します。

srandmember キー名 取得する件数

実際に、使用して取得してみます。

まずは値を設定します。

127.0.0.1:6379> sadd s1 "abc"
(integer) 1

127.0.0.1:6379> sadd s1 "def"
(integer) 1

127.0.0.1:6379> sadd s1 "ghi"
(integer) 1

127.0.0.1:6379> sadd s1 "jkl"
(integer) 1

127.0.0.1:6379> sadd s1 "mno"
(integer) 1

ランダムに取得してみます。

127.0.0.1:6379> srandmember s1
"jkl"

127.0.0.1:6379> srandmember s1
"jkl"

127.0.0.1:6379> srandmember s1
"def"

127.0.0.1:6379> srandmember s1
"abc"

127.0.0.1:6379> srandmember s1
"ghi"

ランダムに取得されていることが確認できます。

キーがない場合は、「空」が返ります。

127.0.0.1:6379> srandmember s2 2
(empty array)

件数を指定

件数を指定することも可能です。重複はしません。

127.0.0.1:6379> srandmember s1 3
1) "def"
2) "jkl"
3) "abc"

127.0.0.1:6379> srandmember s1 2
1) "abc"
2) "ghi"

マイナスを指定すると重複が発生します。

127.0.0.1:6379> srandmember s1 -3
1) "jkl"
2) "ghi"
3) "ghi"

127.0.0.1:6379> srandmember s1 -3
1) "def"
2) "ghi"
3) "abc"

127.0.0.1:6379> srandmember s1 -3
1) "def"
2) "mno"
3) "def"