如果該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版本后可用。