本文内容为 http://redis.io/commands/getrange 的翻译、注解、例子扩充及其它修改。感谢 Redis 作者 Antirez 为开源社区作出的贡献,本文保证最新、最准、最全以表示对其的敬意。欢迎留言纠错、提示更新或支持。
GETRANGE key start end

注意GETRANGE 是由 SUBSTR 命令重命名而来,Redis2.0 之前(包括 2.0)的版本中使用 SUBSTR

返回存储在键 key 中的字符串值(String value)的子串(Substring),该子串由起始偏移 start 及末尾偏移 end 指定(两者必须同时指定)。

Returns the substring of the string value stored at key, determined by the offsets start and end (both are inclusive). 

负偏移可以用来指定从字符串末尾开始的偏移。即 -1 代表最后一个字符,-2 代表倒数第二个字符,以此类推。

Negative offsets can be used in order to provide an offset starting from the end of the string. So -1 means the last character, -2 the penultimate and so forth.

该命令通过限定最终范围至实际字符串长度来处理超出字符串范围的请求。

The function handles out of range requests by limiting the resulting range to the actual length of the string.
  • 返回指定的子字符串。

  • redis> SET mykey "This is a string"
    OK
    redis> GETRANGE mykey 0 3
    "This"
    redis> GETRANGE mykey -3 -1
    "ing"
    redis> GETRANGE mykey 0 -1
    "This is a string"
    redis> GETRANGE mykey 10 100
    "string"
  • 版本支持

    2.4.0+

    时间复杂度(Time complexity)

    O(N)为返回的字符串的长度。时间复杂度基本上由返回的字符串的长度决定,但因为从一个已存在字符串中创建一个子串的操作性能消耗极小,在处理小字符串时,甚至可以认为其时间复杂度为 O(1)

    O(N) where N is the length of the returned string. The complexity is ultimately determined by the returned length, but because creating a substring from an existing string is very cheap, it can be considered O(1) for small strings.