Redis リストのインデックス番号を指定して値を更新する

Redis リストのインデックス番号を指定して値を更新する

Redisで、リストのインデックス番号を指定して値を更新する手順を記述してます。

環境

  • OS Ubuntu 21.10 (Impish Indri)
  • Redis 6.2.6

手順

リストのインデックス番号を指定して値を更新するには、「lset」を使用します。

lset キー名 インデックス番号 更新する値

実際に、以下のリストを作成して更新してみます。

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> lset list1 2 "CCC"
OK

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

127.0.0.1:6379> lset list1 3 "DDD"
OK

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

マイナスを指定

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

127.0.0.1:6379> lset list1 -1 "EEE"
OK

127.0.0.1:6379> lrange list1 0 -1
1) "aaa"
2) "bbb"
3) "CCC"
4) "DDD"
5) "EEE"

127.0.0.1:6379> lset list1 -2 "EEE"
OK

127.0.0.1:6379> lrange list1 0 -1
1) "aaa"
2) "bbb"
3) "CCC"
4) "EEE"
5) "EEE"