Redis 指定した位置から値を更新する

Redis 指定した位置から値を更新する

Redisで、指定した位置から値を更新する手順を記述してます。「setrange」を使用します。位置が範囲を超えている0バイトで埋められます。ここでは、実際に実行した結果を掲載してます。

環境

  • OS CentOS Stream release 9
  • Redis 7.0.5

手順

指定した位置から値を更新するには、「setrange」を使用します。
開始位置は「0」からとなります。

setrange key名 位置 変更する値

実際に、更新してみます。

127.0.0.1:6379> set key1 "abcde"
OK

127.0.0.1:6379> setrange key1 2 "edc"
(integer) 5

127.0.0.1:6379> get key1
"abedc"

更新されていることが確認できます。

127.0.0.1:6379> mget key1 key2 key3
1) "v1"
2) (nil)
3) "v3"

文字数が範囲を超えていても、全て更新されます。

127.0.0.1:6379> set key1 "abcde"
OK

127.0.0.1:6379> setrange key1 0 "aabbccddee"
(integer) 10

127.0.0.1:6379> get key1
"aabbccddee"

位置を超える

指定した位置が存在しない場合は、最終行に追加されますが、範囲を超えると「0」バイトで埋められます。

127.0.0.1:6379> set key1 "abcde"
OK

127.0.0.1:6379> setrange key1 5 "fg"
(integer) 7

127.0.0.1:6379> get key1
"abcdefg"

指定位置が、文字数を超えると「0」バイトで埋められます。

127.0.0.1:6379> set key1 "abcde"
OK

127.0.0.1:6379> setrange key1 6 "fg"
(integer) 8

127.0.0.1:6379> get key1
"abcde\x00fg"

127.0.0.1:6379> set key1 "abcde"
OK

127.0.0.1:6379> setrange key1 7 "fg"
(integer) 9

127.0.0.1:6379> get key1
"abcde\x00\x00fg"