Stirng字符串
GETRANGE命令(标红的部分需要特别注意,需要动手实践才好理解)
命令:getrange key start end,返回从start下标开始,到end下标结束的全部字符串,即通过start和end的两个下标截取字符串(包含start和end两个下标对应的字符串)。
特殊补充:
1.start和end都可以小于0
2.只要getrange key start end中的key不存在,不管start和end谁大谁小始终会返回空字符串“”
3.当存在该key的键值对情况下:
a.当start和end同时为正或者同时为负,只要start的值大于end的值(直接比较大小,不是绝对值比较大小),则返回空字符串“”
b.如果start<0并且end>=0,必定返回空字符串“”。因为截取字符串的时候不存在从左向右还是从右向左截取这种说法,截取时只看start和end两个位置,并返回(包含)二者位置之间的部分,且start位置的字符串就是返回值的第一个字符串,end位置的字符串就是返回值的最后一个字符串====》start(或者是end)小于0时,则表示从右向左数第start的绝对值(或者是end的绝对值)位置的字符串,即-1表示从右向左数第一个字符串,-2表示从右边向左数数第二个字符串。这也是返回空字符串“”的原因:因为这样的话在原value字符串中第一个位置的返回值在最后一个返回值的右侧,这与原value的字符串是相违背的,原字符串不存在这样的数据。
c.start位置的字符串在end的字符串的左侧时,可以通过3种方式获取想要的结果
4.start和end位置超出的部分都会用空字符串“”表示(或者说是不做处理)
127.0.0.1:6379> flushall
OK
#当不存在key的键值对始终返回“”
127.0.0.1:6379> getrange db -3 -2
""
127.0.0.1:6379> getrange db -3 2
""
127.0.0.1:6379> getrange db -2 -3
""
127.0.0.1:6379> getrange db 2 3
""
127.0.0.1:6379> getrange db 3 2
""
127.0.0.1:6379> getrange db 3 -2
""
127.0.0.1:6379> set db redis
OK
127.0.0.1:6379> get db
"redis"
#当存在key的键值对时候,start位置的字符串在end的字符串的右侧
127.0.0.1:6379> getrange db 3 2
""
127.0.0.1:6379> getrange db -2 -3
""
127.0.0.1:6379> getrange db -1 1
""
#当存在key的键值对时候,start位置的字符串在end的字符串的左侧,可以通过3种方式获取想要的结果
127.0.0.1:6379> getrange db 2 4
"dis"
127.0.0.1:6379> getrange db 2 -1
"dis"
127.0.0.1:6379> getrange db -3 -1
"dis"
127.0.0.1:6379> getrange db 2 10
"dis"