Redis命令——字符串相关

本文主要介绍了Redis中字符串相关的命令,主要来源为Redis的官方文档。若有必要请查看http://redis.io/commands#string。redis

 

1.APPEND
语法:APPEND key value
说明:该操做的时间复杂度为O(1)。在假定被附加的值不多而且已经存在的值能够是任意大小的状况下,平均下来该操做的时间复杂度为O(1)。由于Redis所使用的动态字符串库在每次从新分配空间时均会将可用空间加倍。
该命令在key关联的值已经存在而且是字符串类型的状况下,将会把指定的值附加到已有字符串的尾部。若是key并不存在,它将会被建立而且被设置为空串。所以,APPEND命令在这种状况下与SET命令相似。
返回值:返回命令完成后字符串的长度。
该命令自1.3.3版本后可用。

2.DECR
语法:DECR key
说明:该操做的时间复杂度为O(1)。该命令将存储在key上的数字值减1。若是该key不存在,在进行该操做前将会将其设置为O。若是与key相关联的值具备错误的数据类型或者包含一个不能转换为整数的字符串时,该操做将会出现错误。该操做只针对于64位有符号整数。与之相对应的命令为INCR。
返回值:返回减1操做完成后的值。
缓存

若是该key所包含的值的数据类型不符合要求,会返回以下错误信息:服务器

 
该命令自0.0.7版本后可用。

3.DECRBY
语法:DECRBY key decrement
说明:该操做的时间复杂度为O(1)。将存储在key上的值减去由decrement指定的数。若是该key不存在,在进行操做前会将其设置为0。若是与key相关联的值具备错误的数据类型或者包含一个不能转换为整数的字符串时,该操做将会出现错误。该操做只针对于64位有符号整数。
返回值:返回减去指定值后的值。
该命令自0.0.7版本后可用。

4.GET
语法:GET key
说明:该操做的时间复杂度为O(1)。获取存储在key上的值。若是key并不存在,将会返回nil。若是存储在key上的值的数据类型并不是string类型,那么将会出现错误,由于GET仅仅处理string类型的值。
ide

返回值:存储在key上的值,若是该key不存在,那么返回值为nil。spa

若是该key上存储的值的数据类型不符合要求,那么会返回以下出错信息:对象

 
该命令自0.0.7版本后可用。

5.GETBIT
语法:GETBIT key offset
说明:该操做的时间复杂度为O(1)。返回存储在key上的字符串在offset偏移处的所具备的位值。
若是指定的偏移值超出了字符串的长度,后续字符串被视做由0填充的一片连续空间。若是指定的key不存在,那么将被视为一个空串,在这种状况下,偏移值总会超出范围而且其值能够看做是由0填充的一片连续空间。
返回值:返回在offset偏移处的位值。
内存

该命令的典型输入以下所示:rem

 
该命令自2.1.8版本后可用。
文档

 

6.GETRANGE
语法:GETRANGE key start end
说明:时间复杂度为O(N),此处N为须要返回的字符串的长度。时间复杂度最终由返回的长度决定,由于从已经存在的字符串中建立一个子串代价很低,能够认为对于较小的字符串而言时间复杂度为O(1)
 。须要注意的是:该命令被从新命名为GETRANGE,在Redis 2.0版本以前,该命令被称做SUBSTR。该命令返回存储在key上的字符串的特定子串,子串的范围有start和end两个偏移值指定,而且均包含端点。在该命令中能够指定负的偏移值,此时偏移值从字符串尾部开始计算。所以,-1意味着最后一个字符,-2意味着倒数第二个字符。
若是指定的偏移值超出了字符串固有的长度,那么命令将会限定结果的范围为字符串的真实长度。
返回值:返回取到的子串。
该命令自1.3.4版本后可用。

7.GETSET
语法:GETSET key value
说明:该操做的时间复杂度为O(1)。原子性地将key上存储的值设置为value,而且返回原有的值。若是key存在可是所存储的值并非字符串类型,那么将会返回错误。
字符串

返回值:返回存储在key上的原有值,若是该key不存在,那么返回值为nil。

该命令的典型输出以下所示:

 
该命令自0.091版本后可用。

8.INCR
语法:INCR key
说明:该操做的时间复杂度为O(1)。将存储在key上的值加1。若是该key不存在,在进行操做前会将其设置为0。若是与key相关联的值具备错误的数据类型或者包含一个不能转换为整型的字符串,那么将会返回一个错误。该操做只针对于64为有符号数。须要注意的是:这是一个字符串操做,由于Redis中并无一个专门的整型数据类型。存储在key上的字符串被解析为一个十进制的64位有符号整型以便执行该操做。Redis中对整数将以他们的整型表示存储,所以对于实际上表示一个整数的字符串值,依然会按照×××数据进行存储。
返回值:返回加1操做完成后的值。
该命令自0.07版本后可用。

9.INCRBY
语法:INCRBY key increment
说明:该操做的时间复杂度为O(1)。对存储在key上的值加上increment指定的值。若是该key不存在,在执行该操做以前会先将其设置为0,而后再执行该操做。若是存储在该key上的值具备错误的数据类型或包含一个不能转换为整型的字符串值,那么将会返回一个错误。该操做只针对64位有符号整数。
返回值:返回操做完成后的值。
该命令自0.07版本后可用。

10.MGET
语法:MGET key [key ...]
说明:该操做的时间复杂度为O(N),这里N表示将要取回的key的个数。返回存储在指定keys上的值。对于每个其值的数据类型不是字符串类型或者不存在的key,返回值将会为nil。所以,执行该操做并不会出现失败的状况。
返回值:存储在指定keys上的值的列表。
该命令自0.07版本后可用。

11.MSET
语法:MSET key value [key value ...]
说明:该操做的时间复杂对为O(N),此处N为将要设置其值的key的个数。对指定的keys设置相应的值。与SET命令同样,MSET将会使用新值替代原有的值,MSET操做是原子性的,所以全部指定的keys将会在一次操做过程当中设置完成。
返回值:返回值总为OK,由于MSET命令不会失败。
该命令自1.001版本后可用。

12.MSETNX
语法:MSETNX key value [key value ...]
说明:该操做的时间复杂度为O(N),此处N为将要设置其值的keys的个数。将给定的keys设置为相应的值。若是指定的keys中任何一个已经存在,那么该操做将不会被执行。所以,MSETNX能够用来对惟一的逻辑对象中的表示不一样字段的keys设置其值,以便可以确保这些字段要么所有被成功设置要么均不会被设置。MSETNX操做是原子性的,所以全部的keys将会在一次操做过程当中被设置。
返回值:若是全部的keys的值均被设置,那么返回值为1;若是没有key被设置其值,那么返回值为0。
该命令自1.001版本后可用。

13.SET
语法:SET key value
说明:该操做的时间复杂度为O(1)。对指定key设置一个字符串值。若是该key已经具备值,该值将会被重写而无论它的数据类型。
返回值:返回值老是OK,由于SET操做不会失败。
该命令自0.07版本后可用。

14.SETBIT
语法:SETBIT key offset value
说明:该操做的时间复杂度为O(1)。设置或者清除存储在key上的字符串在指定偏移处的位值。命令中的value能够指定为0或者1,根据value的不一样,位值能够被设置或者被清除。当该key不存在时,将会建立一个新的字符串的值。字符串的长度能够增加以便可以包含offset偏移处的值。命令中的offset的值须要大于或者等于0,可是须要小于232。这会将位图(bitmaps)的大小限定在512MB之内。当存储在该key上的字符串被扩展时,增长的位将会被设置为0。须要注意的是,当设置最后一个可能的位(偏移值等于232-1)而且存储在该key上的字符串值还并没包含字符串值或者包含长度较小的字符串值时,Redis须要从新分配中间内存,这可能会阻塞服务器一段时间。一旦第一次分配空间分配完成后,对相同keys后续的SETBIT调用将再也不有空间分配的开销。
返回值:返回在offset偏移处的原有的位值。
该命令自2.1.8版本后可用。

15.SETEX
语法:SETEX key seconds value
说明:该操做的时间复杂度为O(1)。设置key上存储的值为value,而且该key在给定的seconds秒后超时。该命令等同于以下的命令:

SET mykey value EXPIRE mykey seconds SETEX操做是原子性的,而且可使用位于MULTI/EXEC块中的上述两条命令来取代。该命令提供了对指定操做序列的一种替代方式,由于这一操做在Redis用做缓存时使用很是广泛。 返回值:返回Redis的状态码。 该命令自1.3.10版本后可用。 16.SETNX 语法:SETNX key value 说明:该命令的时间复杂度为O(1)。若是指定的key不存在,那么将其值设置为一个字符串。在这种状况下,该命令等同于SET。当在key上已经存储有值时,将不进行任何操做。SETNX能够看做是“SET if Not eXists”的缩写。 返回值:若是该key的值被设置,返回值为1;若是该key没有被设置,那么返回值为0。 该命令自0.07版本后可用。 17.SETRANGE 语法:SETRANGE key offset value 说明:该操做的时间复杂度为O(1),其中并不包括拷贝新串的时间开销。一般状况下,字符串长度很小,所以平均下来时间复杂度能够看做是O(1)。否则的话,时间复杂度为O(M),此处M的值为指定的value的长度。存储在key上字符串被重写的部分从指定的offset位值开始,长度与value所具备的长度相同。若是offset大于当前字符串的长度,字符串将会使用0来补充以便适应指定的offset。若是指定的key不存在,那么存储在其上的值被认为是空串,所以该命令将会确保该key会持有一个足够大的字符串以便可以设置其在offset偏移处的值。须要注意的是:你能够设置的最大的偏移值为229-1,由于Redis字符串的大小被限定在512MB之内。若是你但愿超出该范围,你可使用多个keys。 返回值:返回该命令完成后字符串的长度。 该命令自2.1.8版本后可用。 18.STRLEN 语法:STRLEN key 说明:该操做的时间复杂度为O(1)。返回存储在key上的字符串的长度。若是在该key上存储的值不是字符串类型,那么将返回一个错误。 返回值:返回存储在key上的字符串的长度;若是该key不存在,那么返回值为0。 该命令自2.1.2版本后可用。

相关文章
相关标签/搜索