分享java带来的快乐

我喜欢java新东西

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类型的值。


返回值:存储在key上的值,如果该key不存在,那么返回值为nil。


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




该命令自0.0.7版本后可用。

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


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




该命令自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版本后可用。

posted on 2012-06-19 11:33 强强 阅读(400) 评论(0)  编辑  收藏 所属分类: Redis


只有注册用户登录后才能发表评论。


网站导航: