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

相關文章
相關標籤/搜索