Redis リストの指定した値の前後に値を挿入する

Redis リストの指定した値の前後に値を挿入する

Redisで、リストの指定した値の前後に値を挿入する手順を記述してます。

環境

  • OS Ubuntu 21.10 (Impish Indri)
  • Redis 6.2.6

手順

リストの指定した値の前後に値を挿入するには、「linsert」を使用します。

※beforeを指定すると値の前に、afterを指定すると後ろに挿入します。

linsert キー名 after 値 挿入する値

or

linsert キー名 before 値 挿入する値

実際に、以下のリストを作成して指定した値の前後に値を挿入してみます。

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> lrange list1 0 -1
1) "aaa"
2) "bbb"
3) "ccc"

「bbb」の後ろに「BBB」を挿入してみます。

127.0.0.1:6379> linsert list1 after "bbb" "BBB"
(integer) 4

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

挿入されていることが確認できます。

今度は「bbb」の前に「AAA」を挿入してみます。

127.0.0.1:6379> linsert list1 before "bbb" "AAA"
(integer) 5

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

挿入されていることが確認できます。

値が存在しない場合

指定した値が存在しない場合は「-1」が返り、何も挿入されません。

127.0.0.1:6379> linsert list1 before "ddd" "DDD"
(integer) -1

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

値が複数ある場合

値が複数ある場合は、先頭から先に見つかった値が指定されます。

127.0.0.1:6379> lrange list1 0 -1
1) "AAA"
2) "aaa"
3) "AAA"
4) "bbb"
5) "BBB"
6) "ccc"

127.0.0.1:6379> linsert list1 after "AAA" "BBB"
(integer) 7

127.0.0.1:6379> lrange list1 0 -1
1) "AAA"
2) "BBB"
3) "aaa"
4) "AAA"
5) "bbb"
6) "BBB"
7) "ccc"