Redis命令——字符串相關

本文主要介紹了Redis中字符串相關的命令,主要來源爲Redis的官方文檔。如有必要請查看http://redis.io/commands#string。

 

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版本後可用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章