从 Redis 2.0.0 版本开始,此命令被标记为已废弃
在迁移或编写新的代码时,可以使用 GETRANGE 命令替代。

语法

1
SUBSTR key start end

可用版本

≥ 1.0.0

时间复杂度

$O(N)$

其中 N 是返回字符串的长度。复杂度最终是由返回的长度决定的,但是由于从现有的字符串中创建一个子串的代价是非常低的,对于小的字符串可以认为是 $O(1)$。

ACL类别

@read, @string, @slow

返回存储在 key 中的字符串值的子串,由偏移量 start 和 end 决定(两者均包括在内)。负的偏移量可以用来提供一个从字符串的末尾开始的偏移量。所以 -1 表示最后一个字符,-2 表示倒数第二个,以此类推。

该命令通过将结果范围限制为字符串的实际长度来处理超出范围的请求。

返回值

返回存储在 key 中的字符串值的子串。

示例 1

1
2
3
4
5
redis> SET user "JOHNSON LIN"
OK
redis> SUBSTR user 1 2
"OH"

示例 2

使用负的偏移量:

1
2
3
4
redis> SET user "JOHNSON LIN"
OK
redis> SUBSTR user -3 -1
"LIN"

示例 3

当偏移量超出字符串的实际长度时:

1
2
3
4
redis> SET user "JOHNSON LIN"
OK
redis> SUBSTR user 10 20
"N"

(END)