概述
redis一般用來做緩存,可能很多朋友都沒有深入去學習redis的相關命令,只是涉及到安裝部署而已,所以今天主要總結介紹一下redis字符串的一些命令。
SET
語法:SET key value [EX seconds] [PX milliseconds] [NX|XX]
將字符串值 value 關聯到 key 。
如果 key 已經持有其他值, SET 就覆寫舊值, 無視類型。
當 SET 命令對一個帶有生存時間(TTL)的鍵進行設置之后, 該鍵原有的 TTL 將被清除。
ps:因為 SET 命令可以通過參數來實現 SETNX 、 SETEX 以及 PSETEX 命令的效果, 所以 Redis 將來的版本可能會移除并廢棄 SETNX 、 SETEX 和 PSETEX 這三個命令。
返回值
在 Redis 2.6.12 版本以前, SET 命令總是返回 OK 。
從 Redis 2.6.12 版本開始, SET 命令只在設置操作成功完成時才返回 OK ; 如果命令使用了 NX或者 XX 選項, 但是因為條件沒達到而造成設置操作未執行, 那么命令將返回空批量回復(NULL Bulk Reply)。
實例:
對不存在的鍵進行設置:
對已存在的鍵進行設置
SETNX key value
只在鍵 key 不存在的情況下, 將鍵 key 的值設置為 value 。
若鍵 key 已經存在, 則 SETNX 命令不做任何動作。
SETNX 是『SET if Not eXists』(如果不存在,則 SET)的簡寫。
返回值
命令在設置成功時返回 1 , 設置失敗時返回 0 。
實例:
SETEX key seconds value
將鍵 key 的值設置為 value , 并將鍵 key 的生存時間設置為 seconds 秒鐘。
如果鍵 key 已經存在, 那么 SETEX 命令將覆蓋已有的值。
SETEX 命令的效果和以下兩個命令的效果類似:
SET key value EXPIRE key seconds # 設置生存時間
SETEX 和這兩個命令的不同之處在于 SETEX 是一個原子(atomic)操作, 它可以在同一時間內完成設置值和設置過期時間這兩個操作, 因此 SETEX 命令在儲存緩存的時候非常實用。
返回值
命令在設置成功時返回 OK 。 當 seconds 參數不合法時, 命令將返回一個錯誤。
實例
在鍵 key 不存在的情況下執行 SETEX:
鍵 key 已經存在, 使用 SETEX 覆蓋舊值
PSETEX key milliseconds value
這個命令和 SETEX 命令相似, 但它以毫秒為單位設置 key 的生存時間, 而不是像 SETEX 命令那樣以秒為單位進行設置。
返回值:命令在設置成功時返回 OK
實例:
GET key
返回與鍵 key 相關聯的字符串值。
返回值
如果鍵 key 不存在, 那么返回特殊值 nil ; 否則, 返回鍵 key 的值。
如果鍵 key 的值并非字符串類型, 那么返回一個錯誤, 因為 GET 命令只能用于字符串值。
實例
對不存在的鍵 key 或是字符串類型的鍵 key 執行 GET 命令
對不是字符串類型的鍵 key 執行 GET 命令
GETSET key value
將鍵 key 的值設為 value , 并返回鍵 key 在被設置之前的舊值。
返回值
返回給定鍵 key 的舊值。
如果鍵 key 沒有舊值, 也即是說, 鍵 key 在被設置之前并不存在, 那么命令返回 nil 。
當鍵 key 存在但不是字符串類型時, 命令返回一個錯誤。
實例
STRLEN key
返回鍵 key 儲存的字符串值的長度。
返回值
STRLEN 命令返回字符串值的長度。
當鍵 key 不存在時, 命令返回 0 。
當 key 儲存的不是字符串值時, 返回一個錯誤。
實例
獲取字符串值的長度
AppEND key value
如果鍵 key 已經存在并且它的值是一個字符串, APPEND 命令將把 value 追加到鍵 key 現有值的末尾。
如果 key 不存在, APPEND 就簡單地將鍵 key 的值設為 value , 就像執行 SET key value 一樣。
返回值
追加 value 之后, 鍵 key 的值的長度。
實例
對不存在的 key 執行 APPEND :
對已存在的字符串進行 APPEND
SETRANGE key offset value
從偏移量 offset 開始, 用 value 參數覆蓋(overwrite)鍵 key 儲存的字符串值。
不存在的鍵 key 當作空白字符串處理。
SETRANGE 命令會確保字符串足夠長以便將 value 設置到指定的偏移量上, 如果鍵 key 原來儲存的字符串長度比偏移量小(比如字符串只有 5 個字符長,但你設置的 offset 是 10 ), 那么原字符和偏移量之間的空白將用零字節(zerobytes, "x00" )進行填充。
因為 Redis 字符串的大小被限制在 512 兆(megabytes)以內, 所以用戶能夠使用的最大偏移量為 2^29-1(536870911) , 如果你需要使用比這更大的空間, 可以考慮使用多個 key 。
注意:當生成一個很長的字符串時, Redis 需要分配內存空間, 該操作有時候可能會造成服務器阻塞(block)。 在2010年出產的macbook Pro上, 設置偏移量為 536870911(512MB 內存分配)將耗費約 300 毫秒, 設置偏移量為 134217728(128MB 內存分配)將耗費約 80 毫秒, 設置偏移量 33554432(32MB 內存分配)將耗費約 30 毫秒, 設置偏移量為 8388608(8MB 內存分配)將耗費約 8 毫秒。
返回值
SETRANGE 命令會返回被修改之后, 字符串值的長度。
實例
對非空字符串執行 SETRANGE 命令
GETRANGE key start end
返回鍵 key 儲存的字符串值的指定部分, 字符串的截取范圍由 start 和 end 兩個偏移量決定 (包括 start 和 end 在內)。
負數偏移量表示從字符串的末尾開始計數, -1 表示最后一個字符, -2 表示倒數第二個字符, 以此類推。
GETRANGE 通過保證子字符串的值域(range)不超過實際字符串的值域來處理超出范圍的值域請求。
返回值
GETRANGE 命令會返回字符串值的指定部分。
實例
INCR key
為鍵 key 儲存的數字值加上一。
如果鍵 key 不存在, 那么它的值會先被初始化為 0 , 然后再執行 INCR 命令。
如果鍵 key 儲存的值不能被解釋為數字, 那么 INCR 命令將返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。
返回值
INCR 命令會返回鍵 key 在執行加一操作之后的值。
實例
INCRBY key increment
為鍵 key 儲存的數字值加上增量 increment 。
如果鍵 key 不存在, 那么鍵 key 的值會先被初始化為 0 , 然后再執行 INCRBY 命令。
如果鍵 key 儲存的值不能被解釋為數字, 那么 INCRBY 命令將返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。
返回值
在加上增量 increment 之后, 鍵 key 當前的值。
實例
鍵存在,并且值為數字:
鍵不存在
INCRBYFLOAT key increment
為鍵 key 儲存的值加上浮點數增量 increment 。
如果鍵 key 不存在, 那么 INCRBYFLOAT 會先將鍵 key 的值設為 0 , 然后再執行加法操作。
如果命令執行成功, 那么鍵 key 的值會被更新為執行加法計算之后的新值, 并且新值會以字符串的形式返回給調用者。
無論是鍵 key 的值還是增量 increment , 都可以使用像 2.0e7 、 3e5 、 90e-2 那樣的指數符號(exponential notation)來表示, 但是, 執行 INCRBYFLOAT 命令之后的值總是以同樣的形式儲存, 也即是, 它們總是由一個數字, 一個(可選的)小數點和一個任意長度的小數部分組成(比如 3.14 、 69.768 ,諸如此類), 小數部分尾隨的 0 會被移除, 如果可能的話, 命令還會將浮點數轉換為整數(比如 3.0 會被保存成 3 )。
此外, 無論加法計算所得的浮點數的實際精度有多長, INCRBYFLOAT 命令的計算結果最多只保留小數點的后十七位。
返回值
在加上增量 increment 之后, 鍵 key 的值。
實例
DECR key
為鍵 key 儲存的數字值減去一。
如果鍵 key 不存在, 那么鍵 key 的值會先被初始化為 0 , 然后再執行 DECR 操作。
如果鍵 key 儲存的值不能被解釋為數字, 那么 DECR 命令將返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。
關于遞增(increment) / 遞減(decrement)操作的更多信息, 請參見 INCR 命令的文檔。
返回值
DECR 命令會返回鍵 key 在執行減一操作之后的值。
實例
對儲存數字值的鍵 key 執行 DECR 命令:
對不存在的鍵執行 DECR 命令
DECRBY key decrement
將鍵 key 儲存的整數值減去減量 decrement 。
如果鍵 key 不存在, 那么鍵 key 的值會先被初始化為 0 , 然后再執行 DECRBY 命令。
如果鍵 key 儲存的值不能被解釋為數字, 那么 DECRBY 命令將返回一個錯誤。
本操作的值限制在 64 位(bit)有符號數字表示之內。
關于更多遞增(increment) / 遞減(decrement)操作的更多信息, 請參見 INCR 命令的文檔。
返回值
DECRBY 命令會返回鍵在執行減法操作之后的值。
實例
MSET key value [key value …]
同時為多個鍵設置值。
如果某個給定鍵已經存在, 那么 MSET 將使用新值去覆蓋舊值, 如果這不是你所希望的效果, 請考慮使用 MSETNX 命令, 這個命令只會在所有給定鍵都不存在的情況下進行設置。
MSET 是一個原子性(atomic)操作, 所有給定鍵都會在同一時間內被設置, 不會出現某些鍵被設置了但是另一些鍵沒有被設置的情況。
返回值
MSET 命令總是返回 OK 。
實例
同時對多個鍵進行設置:
覆蓋已有的值:
MSETNX key value [key value …]
當且僅當所有給定鍵都不存在時, 為所有給定鍵設置值。
即使只有一個給定鍵已經存在, MSETNX 命令也會拒絕執行對所有鍵的設置操作。
MSETNX 是一個原子性(atomic)操作, 所有給定鍵要么就全部都被設置, 要么就全部都不設置, 不可能出現第三種狀態。
返回值
當所有給定鍵都設置成功時, 命令返回 1 ; 如果因為某個給定鍵已經存在而導致設置未能成功執行, 那么命令返回 0 。
實例
對不存在的鍵執行 MSETNX 命令
對某個已經存在的鍵進行設置
MGET key [key …]
返回給定的一個或多個字符串鍵的值。
如果給定的字符串鍵里面, 有某個鍵不存在, 那么這個鍵的值將以特殊值 nil 表示。
返回值
MGET 命令將返回一個列表, 列表中包含了所有給定鍵的值。
實例