redis一般用來做緩存,可能很多朋友都沒有深入去學習redis的相關命令,隻是涉及到安裝部署而已,所以今天主要總結介紹一下redis字符串的一些命令。
語法: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)。
實例:
對不存在的鍵進行設置:
對已存在的鍵進行設置
隻在鍵 key 不存在的情況下, 将鍵 key 的值設置為 value 。
若鍵 key 已經存在, 則 SETNX 命令不做任何動作。
SETNX 是『SET if Not eXists』(如果不存在,則 SET)的簡寫。
返回值
命令在設置成功時返回 1 , 設置失敗時返回 0 。
實例:
将鍵 key 的值設置為 value , 并将鍵 key 的生存時間設置為 seconds 秒鐘。
如果鍵 key 已經存在, 那麼 SETEX 命令将覆蓋已有的值。
SETEX 命令的效果和以下兩個命令的效果類似:
SET key value EXPIRE key seconds # 設置生存時間
SETEX 和這兩個命令的不同之處在于 SETEX 是一個原子(atomic)操作, 它可以在同一時間内完成設置值和設置過期時間這兩個操作, 因此 SETEX 命令在儲存緩存的時候非常實用。
返回值
命令在設置成功時返回 OK 。 當 seconds 參數不合法時, 命令将返回一個錯誤。
實例
在鍵 key 不存在的情況下執行 SETEX:
鍵 key 已經存在, 使用 SETEX 覆蓋舊值
這個命令和 SETEX 命令相似, 但它以毫秒為單位設置 key 的生存時間, 而不是像 SETEX 命令那樣以秒為單位進行設置。
返回值:命令在設置成功時返回 OK
實例:
返回與鍵 key 相關聯的字符串值。
返回值
如果鍵 key 不存在, 那麼返回特殊值 nil ; 否則, 返回鍵 key 的值。
如果鍵 key 的值并非字符串類型, 那麼返回一個錯誤, 因為 GET 命令隻能用于字符串值。
實例
對不存在的鍵 key 或是字符串類型的鍵 key 執行 GET 命令
對不是字符串類型的鍵 key 執行 GET 命令
将鍵 key 的值設為 value , 并返回鍵 key 在被設置之前的舊值。
返回值
返回給定鍵 key 的舊值。
如果鍵 key 沒有舊值, 也即是說, 鍵 key 在被設置之前并不存在, 那麼命令返回 nil 。
當鍵 key 存在但不是字符串類型時, 命令返回一個錯誤。
實例
返回鍵 key 儲存的字符串值的長度。
返回值
STRLEN 命令返回字符串值的長度。
當鍵 key 不存在時, 命令返回 0 。
當 key 儲存的不是字符串值時, 返回一個錯誤。
實例
獲取字符串值的長度
如果鍵 key 已經存在并且它的值是一個字符串, APPEND 命令将把 value 追加到鍵 key 現有值的末尾。
如果 key 不存在, APPEND 就簡單地将鍵 key 的值設為 value , 就像執行 SET key value 一樣。
返回值
追加 value 之後, 鍵 key 的值的長度。
實例
對不存在的 key 執行 APPEND :
對已存在的字符串進行 APPEND
從偏移量 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 命令
返回鍵 key 儲存的字符串值的指定部分, 字符串的截取範圍由 start 和 end 兩個偏移量決定 (包括 start 和 end 在内)。
負數偏移量表示從字符串的末尾開始計數, -1 表示最後一個字符, -2 表示倒數第二個字符, 以此類推。
GETRANGE 通過保證子字符串的值域(range)不超過實際字符串的值域來處理超出範圍的值域請求。
返回值
GETRANGE 命令會返回字符串值的指定部分。
實例
為鍵 key 儲存的數字值加上一。
如果鍵 key 不存在, 那麼它的值會先被初始化為 0 , 然後再執行 INCR 命令。
如果鍵 key 儲存的值不能被解釋為數字, 那麼 INCR 命令将返回一個錯誤。
本操作的值限制在 64 位(bit)有符号數字表示之内。
返回值
INCR 命令會返回鍵 key 在執行加一操作之後的值。
實例
為鍵 key 儲存的數字值加上增量 increment 。
如果鍵 key 不存在, 那麼鍵 key 的值會先被初始化為 0 , 然後再執行 INCRBY 命令。
如果鍵 key 儲存的值不能被解釋為數字, 那麼 INCRBY 命令将返回一個錯誤。
本操作的值限制在 64 位(bit)有符号數字表示之内。
返回值
在加上增量 increment 之後, 鍵 key 當前的值。
實例
鍵存在,并且值為數字:
鍵不存在
為鍵 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 的值。
實例
為鍵 key 儲存的數字值減去一。
如果鍵 key 不存在, 那麼鍵 key 的值會先被初始化為 0 , 然後再執行 DECR 操作。
如果鍵 key 儲存的值不能被解釋為數字, 那麼 DECR 命令将返回一個錯誤。
本操作的值限制在 64 位(bit)有符号數字表示之内。
關于遞增(increment) / 遞減(decrement)操作的更多信息, 請參見 INCR 命令的文檔。
返回值
DECR 命令會返回鍵 key 在執行減一操作之後的值。
實例
對儲存數字值的鍵 key 執行 DECR 命令:
對不存在的鍵執行 DECR 命令
将鍵 key 儲存的整數值減去減量 decrement 。
如果鍵 key 不存在, 那麼鍵 key 的值會先被初始化為 0 , 然後再執行 DECRBY 命令。
如果鍵 key 儲存的值不能被解釋為數字, 那麼 DECRBY 命令将返回一個錯誤。
本操作的值限制在 64 位(bit)有符号數字表示之内。
關于更多遞增(increment) / 遞減(decrement)操作的更多信息, 請參見 INCR 命令的文檔。
返回值
DECRBY 命令會返回鍵在執行減法操作之後的值。
實例
同時為多個鍵設置值。
如果某個給定鍵已經存在, 那麼 MSET 将使用新值去覆蓋舊值, 如果這不是你所希望的效果, 請考慮使用 MSETNX 命令, 這個命令隻會在所有給定鍵都不存在的情況下進行設置。
MSET 是一個原子性(atomic)操作, 所有給定鍵都會在同一時間内被設置, 不會出現某些鍵被設置了但是另一些鍵沒有被設置的情況。
返回值
MSET 命令總是返回 OK 。
實例
同時對多個鍵進行設置:
覆蓋已有的值:
當且僅當所有給定鍵都不存在時, 為所有給定鍵設置值。
即使隻有一個給定鍵已經存在, MSETNX 命令也會拒絕執行對所有鍵的設置操作。
MSETNX 是一個原子性(atomic)操作, 所有給定鍵要麼就全部都被設置, 要麼就全部都不設置, 不可能出現第三種狀态。
返回值
當所有給定鍵都設置成功時, 命令返回 1 ; 如果因為某個給定鍵已經存在而導緻設置未能成功執行, 那麼命令返回 0 。
實例
對不存在的鍵執行 MSETNX 命令
對某個已經存在的鍵進行設置
返回給定的一個或多個字符串鍵的值。
如果給定的字符串鍵裡面, 有某個鍵不存在, 那麼這個鍵的值将以特殊值 nil 表示。
返回值
MGET 命令将返回一個列表, 列表中包含了所有給定鍵的值。
實例
後面會分享更多devops和DBA方面的内容,感興趣的朋友可以關注下!
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!