redis 命令整理

selectshen發表於2015-12-03
整理自Stephen_Liu的http://www.cnblogs.com/stephen-liu74/archive/2012/04/16/2370212.html

命令類 命令 描述 返回值
String型別 APPEND key value 如果該Key已經存在,APPEND命令將引數Value的資料追加到已存在Value的末尾。如果該Key不存在,APPEND命令將會建立一個新的Key/Value。 追加後Value的長度。
DECR key  將指定Key的Value原子性的遞減1。如果該Key不存在,其初始值為0,在decr之後其值為-1。如果Value的值不能轉換為整型值,如Hello,該操作將執行失敗並返回相應的錯誤資訊。注意:該操作的取值範圍是64位有符號整型。 遞減後的Value值。
INCR key 將指定Key的Value原子性的遞增1。如果該Key不存在,其初始值為0,在incr之後其值為1。如果Value的值不能轉換為整型值,如Hello,該操作將執行失敗並返回相應的錯誤資訊。注意:該操作的取值範圍是64位有符號整型。  遞增後的Value值。 
DECRBY key decrement   將指定Key的Value原子性的減少decrement。如果該Key不存在, 其初始值為0,在decrby之後其值為-decrement。如果Value的值不能轉換為整型值,如Hello,該操作將執行失敗並返回相應的錯誤信 息。注意:該操作的取值範圍是64位有符號整型。  減少後的Value值。
INCRBY key increment   將指定Key的Value原子性的增加increment。如果該Key不存在, 其初始值為0,在incrby之後其值為increment。如果Value的值不能轉換為整型值,如Hello,該操作將執行失敗並返回相應的錯誤信 息。注意:該操作的取值範圍是64位有符號整型。  增加後的Value值。
GET key  獲取指定Key的Value。如果與該Key關聯的Value不是string型別,Redis將返回錯誤資訊,因為GET命令只能用於獲取string Value。  與該Key相關的Value,如果該Key不存在,返回nil。 
SET key value   設定該Key持有指定的字串Value,如果該Key已經存在,則覆蓋其原有值。 總是返回"OK"。
GETSET key value 原子性的設定該Key為指定的Value,同時返回該Key的原有值。和GET命令一樣,該命令也只能處理string Value,否則Redis將給出相關的錯誤資訊。 返回該Key的原有值,如果該Key之前並不存在,則返回nil。
STRLEN key  返回指定Key的字元值長度,如果Value不是string型別,Redis將執行失敗並給出相關的錯誤資訊。  返回指定Key的Value字元長度,如果該Key不存在,返回0。
SETEX key seconds value 原子性完成兩個操作,一是設定該Key的值為指定字串,同時設定該Key在Redis伺服器中的存活時間(秒數)。該命令主要應用於Redis被當做Cache伺服器使用時。
SETNX key value  如果指定的Key不存在,則設定該Key持有指定字串Value,此時其效果等價於SET命令。相反,如果該Key已經存在,該命令將不做任何操作並返回。 1表示設定成功,否則0。 
SETRANGE key offset value  替換指定Key的部分字串值。從offset開始,替換的長度為該命令第三個參 數value的字串長度,其中如果offset的值大於該Key的原有值Value的字串長度,Redis將會在Value的後面補齊(offset - strlen(value))數量的0x00,之後再追加新值。如果該鍵不存在,該命令會將其原值的長度假設為0,並在其後添補offset個0x00後 再追加新值。鑑於字串Value的最大長度為512M,因此offset的最大值為536870911。最後需要注意的是,如果該命令在執行時致使指定 Key的原有值長度增加,這將會導致Redis重新分配足夠的記憶體以容納替換後的全部字串,因此就會帶來一定的效能折損。  修改後的字串Value長度。 
GETRANGE key start end  如果擷取的字串長度很短,我們可以該命令的時間複雜度視為O(1),否則就是O(N),這裡N表示擷取的子字串長度。該命令在擷取子字串時,將以閉區間的方式同時包含start(0表示第一個字元)和end所在的字元,如果end值超過Value的字元長度,該命令將只是擷取從start開始之後所有的字元資料。  子字串 
SETBIT key offset value  設定在指定Offset上BIT的值,該值只能為1或0,在設定後該命令返回該 Offset上原有的BIT值。如果指定Key不存在,該命令將建立一個新值,並在指定的Offset上設定引數中的BIT值。如果Offset大於 Value的字元長度,Redis將拉長Value值並在指定Offset上設定引數中的BIT值,中間新增的BIT值為0。最後需要說明的是 Offset值必須大於0。  在指定Offset上的BIT原有值。 
GETBIT key offset  返回在指定Offset上BIT的值,0或1。如果Offset超過string value的長度,該命令將返回0,所以對於空字串始終返回0。  在指定Offset上的BIT值。 
MGET key [key ...]  N表示獲取Key的數量。返回所有指定Keys的Values,如果其中某個Key不存在,或者其值不為string型別,該Key的Value將返回nil。 返回一組指定Keys的Values的列表。 
MSET key value [key value ...]  N表示指定Key的數量。該命令原子性的完成引數中所有key/value的設定操作,其具體行為可以看成是多次迭代執行SET命令。  該命令不會失敗,始終返回OK。  
MSETNX key value [key value ...]  N表示指定Key的數量。該命令原子性的完成引數中所有key/value的設定操作,其具體行為可以看成是多次迭代執行SETNX命令。然而這裡需要明確說明的是,如果在這一批Keys中有任意一個Key已經存在了,那麼該操作將全部回滾,即所有的修改都不會生效。 1表示所有Keys都設定成功,0則表示沒有任何Key被修改。
List型別 LPUSH key value [value ...]  在指定Key所關聯的List Value的頭部插入引數中給出的所有Values。如果該Key不存在,該命令將在插入之前建立一個與該Key關聯的空連結串列,之後再將資料從連結串列的頭部插入。如果該鍵的Value不是連結串列型別,該命令將返回相關的錯誤資訊。  插入後連結串列中元素的數量。 
LPUSHX key value  僅有當引數中指定的Key存在時,該命令才會在其所關聯的List Value的頭部插入引數中給出的Value,否則將不會有任何操作發生。 插入後連結串列中元素的數量。 
LRANGE key start stop  時間複雜度中的S為start參數列示的偏移量,N表示元素的數量。該命令的引數 start和end都是0-based。即0表示連結串列頭部(leftmost)的第一個元素。其中start的值也可以為負值,-1將表示連結串列中的最後一 個元素,即尾部元素,-2表示倒數第二個並以此類推。該命令在獲取元素時,start和end位置上的元素也會被取出。如果start的值大於連結串列中元素 的數量,空連結串列將會被返回。如果end的值大於元素的數量,該命令則獲取從start(包括start)開始,連結串列中剩餘的所有元素。 返回指定範圍內元素的列表。
LPOP key  返回並彈出指定Key關聯的連結串列中的第一個元素,即頭部元素,。如果該Key不存,返回nil。  連結串列頭部的元素。 
LLEN key 返回指定Key關聯的連結串列中元素的數量,如果該Key不存在,則返回0。如果與該Key關聯的Value的型別不是連結串列,則返回相關的錯誤資訊。 連結串列中元素的數量。 
LREM key count value  時間複雜度中N表示連結串列中元素的數量。在指定Key關聯的連結串列中,刪除前 count個值等於value的元素。如果count大於0,從頭向尾遍歷並刪除,如果count小於0,則從尾向頭遍歷並刪除。如果count等於0, 則刪除連結串列中所有等於value的元素。如果指定的Key不存在,則直接返回0。 返回被刪除的元素數量。
LSET key index value  時間複雜度中N表示連結串列中元素的數量。但是設定頭部或尾部的元素時,其時間複雜度為O(1)。設定連結串列中指定位置的值為新值,其中0表示第一個元素,即頭部元素,-1表示尾部元素。如果索引值Index超出了連結串列中元素的數量範圍,該命令將返回相關的錯誤資訊。
LINDEX key index  時間複雜度中N表示在找到該元素時需要遍歷的元素數量。對於頭部或尾部元素,其時 間複雜度為O(1)。該命令將返回連結串列中指定位置(index)的元素,index是0-based,表示頭部元素,如果index為-1,表示尾部元 素。如果與該Key關聯的不是連結串列,該命令將返回相關的錯誤資訊。 返回請求的元素,如果index超出範圍,則返回nil。
LTRIM key start stop  N表示被刪除的元素數量。該命令將僅保留指定範圍內的元素,從而保證連結中的元素 數量相對恆定。start和stop引數都是0-based,0表示頭部元素。和其他命令一樣,start和stop也可以為負值,-1表示尾部元素。如 果start大於連結串列的尾部,或start大於stop,該命令不錯報錯,而是返回一個空的連結串列,與此同時該Key也將被刪除。如果stop大於元素的數 量,則保留從start開始剩餘的所有元素。
LINSERT key BEFORE|AFTER pivot value  時間複雜度中N表示在找到該元素pivot之前需要遍歷的元素數量。這樣意味著如 果pivot位於連結串列的頭部或尾部時,該命令的時間複雜度為O(1)。該命令的功能是在pivot元素的前面或後面插入引數中的元素value。如果 Key不存在,該命令將不執行任何操作。如果與Key關聯的Value型別不是連結串列,相關的錯誤資訊將被返回。 成功插入後連結串列中元素的數量,如果沒有找到pivot,返回-1,如果key不存在,返回0。
RPUSH key value [value ...]  在指定Key所關聯的List Value的尾部插入引數中給出的所有Values。如果該Key不存在,該命令將在插入之前建立一個與該Key關聯的空連結串列,之後再將資料從連結串列的尾部插入。如果該鍵的Value不是連結串列型別,該命令將返回相關的錯誤資訊。   插入後連結串列中元素的數量。 
RPUSHX key value  僅有當引數中指定的Key存在時,該命令才會在其所關聯的List Value的尾部插入引數中給出的Value,否則將不會有任何操作發生。  插入後連結串列中元素的數量。 
RPOP key  返回並彈出指定Key關聯的連結串列中的最後一個元素,即尾部元素,。如果該Key不存,返回nil。  連結串列尾部的元素。 
RPOPLPUSH source destination  原子性的從與source鍵關聯的連結串列尾部彈出一個元素,同時再將彈出的元素插入 到與destination鍵關聯的連結串列的頭部。如果source鍵不存在,該命令將返回nil,同時不再做任何其它的操作了。如果source和 destination是同一個鍵,則相當於原子性的將其關聯連結串列中的尾部元素移到該連結串列的頭部。 返回彈出和插入的元素。 
Set型別 SADD key member [member ...] 時間複雜度中的N表示操作的成員數量。如果在插入的過程用,引數中有的成員在 Set中已經存在,該成員將被忽略,而其它成員仍將會被正常插入。如果執行該命令之前,該Key並不存在,該命令將會建立一個新的Set,此後再將引數中 的成員陸續插入。如果該Key的Value不是Set型別,該命令將返回相關的錯誤資訊。 本次操作實際插入的成員數量。
SCARD key 獲取Set中成員的數量。 返回Set中成員的數量,如果該Key並不存在,返回0。
SISMEMBER key member 判斷引數中指定成員是否已經存在於與Key相關聯的Set集合中。 1表示已經存在,0表示不存在,或該Key本身並不存在。
SMEMBERS key 時間複雜度中的N表示Set中已經存在的成員數量。獲取與該Key關聯的Set中所有的成員。 返回Set中所有的成員。
SPOP key  隨機的移除並返回Set中的某一成員。 由於Set中元素的佈局不受外部控制,因此無法像List那樣確定哪個元素位於Set的頭部或者尾部。 返回移除的成員,如果該Key並不存在,則返回nil。
SREM key member [member ...] 時間複雜度中的N表示被刪除的成員數量。從與Key關聯的Set中刪除引數中指定的成員,不存在的引數成員將被忽略,如果該Key並不存在,將視為空Set處理。 從Set中實際移除的成員數量,如果沒有則返回0。
SRANDMEMBER key  和SPOP一樣,隨機的返回Set中的一個成員,不同的是該命令並不會刪除返回的成員。 返回隨機位置的成員,如果Key不存在則返回nil。
SMOVE source destination member 原子性的將引數中的成員從source鍵移入到destination鍵所關聯的 Set中。因此在某一時刻,該成員或者出現在source中,或者出現在destination中。如果該成員在source中並不存在,該命令將不會再 執行任何操作並返回0,否則,該成員將從source移入到destination。如果此時該成員已經在destination中存在,那麼該命令僅是 將該成員從source中移出。如果和Key關聯的Value不是Set,將返回相關的錯誤資訊。 1表示正常移動,0表示source中並不包含引數成員。
SDIFF key [key ...] 時間複雜度中的N表示所有Sets中成員的總數量。返回引數中第一個Key所關聯的Set和其後所有Keys所關聯的Sets中成員的差異。如果Key不存在,則視為空Set。 差異結果成員的集合。 
SDIFFSTORE destination key [key ...]  該命令和SDIFF命令在功能上完全相同,兩者之間唯一的差別是SDIFF返回差異的結果成員,而該命令將差異成員儲存在destination關聯的Set中。如果destination鍵已經存在,該操作將覆蓋它的成員。 返回差異成員的數量。
SINTER key [key ...]  時間複雜度中的N表示最小Set中元素的數量,M則表示引數中Sets的數量。該命令將返回引數中所有Keys關聯的Sets中成員的交集。因此如果引數中任何一個Key關聯的Set為空,或某一Key不存在,那麼該命令的結果將為空集。 交集結果成員的集合。
SINTERSTORE destination key [key ...] 該命令和SINTER命令在功能上完全相同,兩者之間唯一的差別是SINTER返回交集的結果成員,而該命令將交整合員儲存在destination關聯的Set中。如果destination鍵已經存在,該操作將覆蓋它的成員。 返回交整合員的數量。 
SUNION key [key ...]  時間複雜度中的N表示所有Sets中成員的總數量。該命令將返回引數中所有Keys關聯的Sets中成員的並集。 並集結果成員的集合。 
SUNIONSTORE destination key [key ...]  該命令和SUNION命令在功能上完全相同,兩者之間唯一的差別是SUNION返回並集的結果成員,而該命令將並整合員儲存在destination關聯的Set中。如果destination鍵已經存在,該操作將覆蓋它的成員。  返回並整合員的數量。
Hashes型別 HSET key field value 為指定的Key設定Field/Value對,如果Key不存在,該命令將建立新Key以引數中的Field/Value對,如果引數中的Field在該Key中已經存在,則用新值覆蓋其原有值。  1表示新的Field被設定了新值,0表示Field已經存在,用新值覆蓋原有值。 
HGET key field  返回指定Key中指定Field的關聯值。 返回引數中Field的關聯值,如果引數中的Key或Field不存,返回nil。
HEXISTS key field  判斷指定Key中的指定Field是否存在。 1表示存在,0表示引數中的Field或Key不存在。 
HLEN key  獲取該Key所包含的Field的數量。 返回Key包含的Field數量,如果Key不存在,返回0。
HDEL key field [field ...]  時間複雜度中的N表示引數中待刪除的欄位數量。從指定Key的Hashes Value中刪除引數中指定的多個欄位,如果不存在的欄位將被忽略。如果Key不存在,則將其視為空Hashes,並返回0. 實際刪除的Field數量。 
HSETNX key field value 只有當引數中的Key或Field不存在的情況下,為指定的Key設定Field/Value對,否則該命令不會進行任何操作。  1表示新的Field被設定了新值,0表示Key或Field已經存在,該命令沒有進行任何操作。 
HINCRBY key field increment  增加指定Key中指定Field關聯的Value的值。如果Key或Field不存在,該命令將會建立一個新Key或新Field,並將其關聯的Value初始化為0,之後再指定數字增加的操作。該命令支援的數字是64位有符號整型,即increment可以負數。  返回運算後的值。 
HGETALL key 時間複雜度中的N表示Key包含的Field數量。獲取該鍵包含的所有Field/Value。其返回格式為一個Field、一個Value,並以此類推。 Field/Value的列表。
HKEYS key  時間複雜度中的N表示Key包含的Field數量。返回指定Key的所有Fields名。 Field的列表。
HVALS key  時間複雜度中的N表示Key包含的Field數量。返回指定Key的所有Values名。  Value的列表。 
HMGET key field [field ...]  時間複雜度中的N表示請求的Field數量。獲取和引數中指定Fields關聯的一組Values。如果請求的Field不存在,其值返回nil。如果Key不存在,該命令將其視為空Hash,因此返回一組nil。 返回和請求Fields關聯的一組Values,其返回順序等同於Fields的請求順序。
HMSET key field value [field value ...] 時間複雜度中的N表示被設定的Field數量。逐對依次設定引數中給出的Field/Value對。如果其中某個Field已經存在,則用新值覆蓋原有值。如果Key不存在,則建立新Key,同時設定引數中的Field/Value。  
Sorted-Sets型別 ZADD key score member [score] [member]  時間複雜度中的N表示Sorted-Sets中成員的數量。新增引數中指定的所有 成員及其分數到指定key的Sorted-Set中,在該命令中我們可以指定多組score/member作為引數。如果在新增時引數中的某一成員已經存 在,該命令將更新此成員的分數為新值,同時再將該成員基於新值重新排序。如果鍵不存在,該命令將為該鍵建立一個新的Sorted-Sets Value,並將score/member對插入其中。如果該鍵已經存在,但是與其關聯的Value不是Sorted-Sets型別,相關的錯誤資訊將被 返回。 本次操作實際插入的成員數量。
ZCARD key  獲取與該Key相關聯的Sorted-Sets中包含的成員數量。 返回Sorted-Sets中的成員數量,如果該Key不存在,返回0。
ZCOUNT key min max 時間複雜度中的N表示Sorted-Sets中成員的數量,M則表示min和max之間元素的數量。該命令用於獲取分數(score)在min和max之間的成員數量。針對min和max引數需要額外說明的是,-inf+inf分別表示Sorted-Sets中分數的最高值和最低值。預設情況下,min和max表示的範圍是閉區間範圍,即min <= score <= max內的成員將被返回。然而我們可以透過在min和max的前面新增"("字元來表示開區間,如(min max表示min < score <= max,而(min (max表示min < score < max 分數指定範圍內成員的數量。
ZINCRBY key increment member  時間複雜度中的N表示Sorted-Sets中成員的數量。該命令將為指定Key 中的指定成員增加指定的分數。如果成員不存在,該命令將新增該成員並假設其初始分數為0,此後再將其分數加上increment。如果Key不存,該命令 將建立該Key及其關聯的Sorted-Sets,幷包含引數指定的成員,其分數為increment引數。如果與該Key關聯的不是Sorted- Sets型別,相關的錯誤資訊將被返回。 以字串形式表示的新分數。
ZRANGE key start stop [WITHSCORES]  時間複雜度中的N表示Sorted-Set中成員的數量,M則表示返回的成員數 量。該命令返回順序在引數start和stop指定範圍內的成員,這裡start和stop引數都是0-based,即0表示第一個成員,-1表示最後一 個成員。如果start大於該Sorted-Set中的最大索引值,或start > stop,此時一個空集合將被返回。如果stop大於最大索引值,該命令將返回從start到集合的最後一個成員。如果命令中帶有可選引數WITHSCORES選項,該命令在返回的結果中將包含每個成員的分數值,如value1,score1,value2,score2...。   返回索引在start和stop之間的成員列表。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]  時間複雜度中的N表示Sorted-Set中成員的數量,M則表示返回的成員數 量。該命令將返回分數在min和max之間的所有成員,即滿足表示式min <= score <= max的成員,其中返回的成員是按照其分數從低到高的順序返回,如果成員具有相同的分數,則按成員的字典順序返回。可選引數LIMIT用於限制返回成員的 數量範圍。可選引數offset表示從符合條件的第offset個成員開始返回,同時返回count個成員。可選引數WITHSCORES的含義參照 ZRANGE中該選項的說明。最後需要說明的是引數中min和max的規則可參照命令ZCOUNT。 返回分數在指定範圍內的成員列表。
ZRANK key member  時間複雜度中的N表示Sorted-Set中成員的數量。Sorted-Set中的成員都是按照分數從低到高的順序儲存,該命令將返回引數中指定成員的位置值,其中0表示第一個成員,它是Sorted-Set中分數最低的成員。  如果該成員存在,則返回它的位置索引值。否則返回nil。
ZREM key member [member ...] 時間複雜度中N表示Sorted-Set中成員的數量,M則表示被刪除的成員數量。該命令將移除引數中指定的成員,其中不存在的成員將被忽略。如果與該Key關聯的Value不是Sorted-Set,相應的錯誤資訊將被返回。 實際被刪除的成員數量。
ZREVRANGE key start stop [WITHSCORES]   時間複雜度中的N表示Sorted-Set中成員的數量,M則表示返回的成員數量。該命令的功能和ZRANGE基本相同,唯一的差別在於該命令是透過反向排序獲取指定位置的成員,即從高到低的順序。如果成員具有相同的分數,則按降序字典順序排序。 返回指定的成員列表。
ZREVRANK key member  時間複雜度中的N表示Sorted-Set中成員的數量。該命令的功能和ZRANK基本相同,唯一的差別在於該命令獲取的索引是從高到低排序後的位置,同樣0表示第一個元素,即分數最高的成員。  如果該成員存在,則返回它的位置索引值。否則返回nil。 
ZSCORE key member 獲取指定Key的指定成員的分數。 如果該成員存在,以字串的形式返回其分數,否則返回nil。
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]  時間複雜度中的N表示Sorted-Set中成員的數量,M則表示返回的成員數量。該命令除了排序方式是基於從高到低的分數排序之外,其它功能和引數含義均與ZRANGEBYSCORE相同。 返回分數在指定範圍內的成員列表。 
ZREMRANGEBYRANK key start stop  時間複雜度中的N表示Sorted-Set中成員的數量,M則表示被刪除的成員數量。刪除索引位置位於start和stop之間的成員,start和stop都是0-based,即0表示分數最低的成員,-1表示最後一個成員,即分數最高的成員。   被刪除的成員數量。
ZREMRANGEBYSCORE key min max  時間複雜度中的N表示Sorted-Set中成員的數量,M則表示被刪除的成員數量。刪除分數在min和max之間的所有成員,即滿足表示式min <= score <= max的所有成員。對於min和max引數,可以採用開區間的方式表示,具體規則參照ZCOUNT。  被刪除的成員數量。
Key操作 KEYS pattern 時間複雜度中的N表示資料庫中Key的數量。獲取所有匹配pattern引數的Keys。需要說明的是,在我們的正常操作中應該儘量避免對該命令的呼叫,因為對於大型資料庫而言,該命令是非常耗時的,對Redis伺服器的效能打擊也是比較大的。pattern支援glob-style的萬用字元格式,如*表示任意一個或多個字元,?表示任意字元,[abc]表示方括號中任意一個字母。 匹配模式的鍵列表。
DEL key [key ...] 時間複雜度中的N表示刪除的Key數量。從資料庫刪除中引數中指定的keys,如 果指定鍵不存在,則直接忽略。還需要另行指出的是,如果指定的Key關聯的資料型別不是String型別,而是List、Set、Hashes和 Sorted Set等容器型別,該命令刪除每個鍵的時間複雜度為O(M),其中M表示容器中元素的數量。而對於String型別的Key,其時間複雜度為O(1)。  實際被刪除的Key數量。
EXISTS key  判斷指定鍵是否存在。  1表示存在,0表示不存在。 
MOVE key db  將當前資料庫中指定的鍵Key移動到引數中指定的資料庫中。如果該Key在目標資料庫中已經存在,或者在當前資料庫中並不存在,該命令將不做任何操作並返回0。   移動成功返回1,否則0。
RENAME key newkey  為指定指定的鍵重新命名,如果引數中的兩個Keys的命令相同,或者是源Key不存在,該命令都會返回相關的錯誤資訊。如果newKey已經存在,則直接覆蓋。 
RENAMENX key newkey 如果新值不存在,則將引數中的原值修改為新值。其它條件和RENAME一致。 1表示修改成功,否則0。 
PERSIST key 如果Key存在過期時間,該命令會將其過期時間消除,使該Key不再有超時,而是可以持久化儲存。 1表示Key的過期時間被移出,0表示該Key不存在或沒有過期時間。 
EXPIRE key seconds  該命令為引數中指定的Key設定超時的秒數,在超過該時間後,Key被自動的刪除。如果該Key在超時之前被修改,與該鍵關聯的超時將被移除。  1表示超時被設定,0則表示Key不存在,或不能被設定。
EXPIREAT key timestamp  該命令的邏輯功能和EXPIRE完全相同,唯一的差別是該命令指定的超時時間是絕對時間,而不是相對時間。該時間引數是Unix timestamp格式的,即從1970年1月1日開始所流經的秒數。 1表示超時被設定,0則表示Key不存在,或不能被設定。 
TTL key  獲取該鍵所剩的超時描述。  返回所剩描述,如果該鍵不存在或沒有超時設定,則返回-1。
RANDOMKEY 從當前開啟的資料庫中隨機的返回一個Key。 返回的隨機鍵,如果該資料庫是空的則返回nil。 
TYPE key  獲取與引數中指定鍵關聯值的型別,該命令將以字串的格式返回。 返回的字串為string、list、set、hash和zset,如果key不存在返回none。
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]  這個命令相對來說是比較複雜的,因此我們這裡只是給出最基本的用法,有興趣的網友可以去參考redis的官方文件。 返回排序後的原始列表。 
事務 MULTI 用於標記事務的開始,其後執行的命令都將被存入命令佇列,直到執行EXEC時,這些命令才會被原子的執行。 始終返回OK
EXEC 執行在一個事務內命令佇列中的所有命令,同時將當前連線的狀態恢復為正常狀態,即 非事務狀態。如果在事務中執行了WATCH命令,那麼只有當WATCH所監控的Keys沒有被修改的前提下,EXEC命令才能執行事務佇列中的所有命令, 否則EXEC將放棄當前事務中的所有命令。 原子性的返回事務中各條命令的返回結果。如果在事務中使用了WATCH,一旦事務被放棄,EXEC將返回NULL-multi-bulk回覆。
DISCARD 回滾事務佇列中的所有命令,同時再將當前連線的狀態恢復為正常狀態,即非事務狀態。如果WATCH命令被使用,該命令將UNWATCH所有的Keys。 始終返回OK。
WATCH key [key ...] 在MULTI命令執行之前,可以指定待監控的Keys,然而在執行EXEC之前,如果被監控的Keys發生修改,EXEC將放棄執行該事務佇列中的所有命令。 始終返回OK。
UNWATCH 取消當前事務中指定監控的Keys,如果執行了EXEC或DISCARD命令,則無需再手工執行該命令了,因為在此之後,事務中所有被監控的Keys都將自動取消。 始終返回OK。
伺服器管理 CONFIG GET parameter  主要用於讀取伺服器的執行時引數,但是並不是所有的配置引數都可以透過該命令進行 讀取。其中該命令的引數接受glob風格的模式匹配規則,因此如果引數中包含模式元字元,那麼所有匹配的引數都將以key/value方式被列出。如果參 數是*,那麼該命令支援的所有引數都將被列出。最後需要指出的是,和redis.conf中不同的是,在命令中不能使用數量縮寫格式,如GB、KB等,只 能使用表示位元組數量的整數值。
CONFIG SET parameter value  該命令用於重新配置Redis伺服器的執行時引數,在設定成功之後無需重啟便可生 效。然而並非所有的引數都可以透過該命令進行動態設定,如果需要獲悉該命令支援哪些引數,可以檢視CONFIG GET * 命令的執行結果。如果想在一個命令中設定多個同型別引數,如redis.conf配置檔案中的save引數:save 900 1/save 300 10。在該命令中我們可以將多個key/value用雙引號括起,並用空格符隔開,如:config set save "900 1 300 10"。  OK表示設定成功,否則返回相關的錯誤資訊。
CONFIG RESETSTAT  Reset INFO命令給出的統計數字。 始終返回OK。
DBSIZE  返回當前開啟的資料庫中Keys的數量。  Key的數量。
FLUSHALL  清空當前伺服器管理的資料庫中的所有Keys,不僅限於當前開啟的資料庫。 
FLUSHDB 清空當前資料庫中的所有Keys。
INFO  獲取和伺服器執行狀況相關的一些列統計數字。
SAVE 設定RDB持久化模式的儲存策略。 
SHUTDOWN  停止所有的客戶端,同時以阻塞的方式執行記憶體資料持久化。如果AOF模式被啟用,則將快取中的資料flush到AOF檔案。退出伺服器。 
SLAVEOF host port  該命令用於修改SLAVE伺服器的複製設定。如果一個Redis伺服器已經處於SLAVE狀態,SLAVEOF NO ONE命 令將關閉當前伺服器的被複制狀態,與此同時將該伺服器切換到MASTER狀態。該命令的引數將指定MASTER伺服器的監聽IP和埠。還有一種情況是, 當前伺服器已經是另外一臺MASTER的SLAVE了,在執行該命令後,當前伺服器將終止和之前MASTER之間的複製關係,而將成為新MASTER的 SLAVE,之前MASTER中的資料也將被清空,改為新MASTER中的資料。然而如果在當前SLAVE伺服器上執行的是SLAVEOF NO ONE命令,那麼該伺服器只是中斷與當前MASTER的複製關係,並升級為獨立的MASTER,其中的資料也不會被清空。
SLOWLOG subcommand [argument]  該命令主要用於讀取執行時間較長的命令。其中執行時間的評判標準僅為命令本身的執 行時間,並不包括網路互動時間。和該命令相關的配置引數主要有兩個,第一個就是執行之間的閾值(以微秒為單位),即執行時間超過該值的命令都會被存入 slowlog佇列,以供該命令讀取。第二個是slowlog佇列的長度,如果當前命令在存入之前,該佇列中的命令已經等於該引數,在命令進入之前,需要 將佇列中最老的命令移出佇列。這樣可以保證該佇列所佔用的記憶體總量保持在一個相對恆定的大小。由於slowlog佇列不會被持久化到磁碟,因此Redis 在收集命令時不會對效能產生很大的影響。通常我們可以將引數"slowlog-log-slower-than"設定為0,以便收集所有命令的執行時間。該命令還包含以下幾個子命令:
1). SLOWLOG GET N: 從slowlog佇列中讀取命令資訊,N表示最近N條命令的資訊。
2). SLOWLOG LEN:獲取slowlog佇列的長度。
3). SLOWLOG RESET:清空slowlog中的內容。
最後給出SLOWLOG GET命令返回資訊的解釋。
redis 127.0.0.1:6379> slowlog get 10
    1) 1) (integer) 5                 #唯一表示符,在Redis重啟之前,該值保證唯一。
        2) (integer) 1330369320 #Unix Timestamp格式表示的命令執行時間。
        3) (integer) 13               #命令執行所用的微秒數。
        4) 1) "slowlog"               #以字串陣列的格式輸出收集到的命令及其引數。               
            2) "reset"       

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28539951/viewspace-1852799/,如需轉載,請註明出處,否則將追究法律責任。

相關文章