redis命令拾遺(字符串操作)

前言

前一段時間一直在忙,拉下了一些知識的學習,現在努力追趕修補中。= =

當然也有一些新的知識的學習,但其實更多的是關於一些知識的拾遺。之前在工作當中發現對redis命令掌握的還不是很完善,所以想花比較少的碎片時間去寫一下redis常用命令的拾遺。

redis命令

對這些命令的拾遺記錄是在網站:http://redisdoc.com上進行學習的,很簡單明瞭,推薦給大家進行學習拾遺。

這裏只是把日常會被忽略或者遺忘的點進行一下梳理,並不是每個知識點的一個總結。

字符串操作

set命令

set可以通過一系列參數進行修改:

  • ex seconds :將鍵的過期時間設置爲seconds秒,具體的命令是set key value EX seconds。等同於執行setex key second value。
  • px milliseconds:和ex一樣,只不過單位是毫秒,具體的命令是 set key value PX milliseconds。等同於執行psetex key milliseconds value。
  • nx / xx: set key value nx等價於 setnx key value;set key value xx是當鍵存在才設置值,沒有setxx這個嗎命令,這兩個設置值失敗的時候,set命令會返回nil,而直接使用setnx命令,則返回的是0和1。

setex命令

setex命令效果等價於執行下邊兩個命令:

set key value
expire key seconds

但是不同的是,setex是一個原子的操作,它是在同一時間完成設置值和過期時間的操作,經常用在存儲緩存時候。

setex設置成功時候 返回ok。

同樣psetex只是單位是毫秒而已。

get命令

get命令不用多說,但是注意get命令只是用在字符串操作,如果key對應的值不是字符串類型,那麼返回一個錯誤。

getset命令

此命令的作用是:將key設置爲value,並且返回key在被設置之前的值。如果key之前不存在,則返回nil。當鍵key存在但不是字符串時,會報錯。

strlen命令

返回字符串key的長度,當key不是字符串時,返回一個錯誤。如果key不存在,返回0。

append命令

append命令:如果已經存在key並且它的值是一個字符串,append命令將value追加到key對應值的末尾。如果key不存在,append命令會像執行set key value一樣將值設置爲對應的key的值。

append命令的返回值是值字符串的長度。

注意append的時間複雜度是平攤o(1)

setrange key offset value

指從偏移量offset開始,用value參數覆寫value值。這個命令會確保字符串足夠長以便於設置value到對應的偏移量。比如字符串只有5個字符長,但設置的offset是10,那麼會在原來字符串值到偏移量之間設置零字節("\x00")進行填充。

這個命令的返回值是被修改之後字符串值的長度

getrange key start end

這個命令指的是返回鍵key對應的字符串值的指定部分,字符串的截取範圍由start end兩個參數決定(包括start和end在內)。start和end支持負數偏移量,-1代表最後一個字符,-2代表倒數第二個字符。但是注意只能按照字符串順序獲取,不能倒序獲取**(比如 getrange key -1 -3)**

incr key

incr雖然是自增的含義命令,但其實是一個屬於字符串的操作,redis並未提供一個專用的整數類型,所以鍵key存儲的值在執行incr命令的時候會被翻譯解釋爲十進制64位有符號整數。

如果incr操作的key值對應不存在,那麼先會初始化爲0,然後再執行incr命令。

如果key值不能被解釋爲數字,那麼會返回一個錯誤。

incrby key increment

和incr一樣的含義,只不過有遞增量爲increment。同樣的遞減是有對應的decr key和decrby key decrement。

incrbyfloat key increment

這個就是針對浮點數的增加計算。注意incrbyfloat命令計算的結果最多隻保留小數點後面17位。

mset key value [key value …]

同時爲多個鍵設置值,這個命令是一個原子操作,所有給定鍵會在同一時間內被設置,並且具有set的特性,會覆蓋key對應原來的值。如果僅是在不存在的情況下設置值,可以用msetnx,msetnx也是一個原子操作,如果多個key中有一個key沒有設置上,那麼所有的key都不會設置對應的值。

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