1.DEL
語法:DEL key [key ...]
說明:移除指定的keys,若是該key不存在則將會被忽略。該操做的時間複雜度爲O(N),這裏N爲將要移除的keys的個數。當將要移除的key對應 除字符串類型外其它類型的值時,對該key進行操做的時間複雜度爲O(M),M爲列表(list)、集合(set)、有序集合(sorted set)或者哈希(hash)中所包含元素的個數。移除對應值爲字符串類型的單個key的時間複雜度爲O(1)。
返回值:將要移除的keys的個數。
該命令自0.07版本後可用。
2.EXISTS
語法:EXISTS key
說明:判斷指定的key是否存在。該操做的時間複雜度爲O(1)。
返回值:若是指定的key存在,則返回值爲1,不然返回值爲0。
該命令自0.0.7版本後可用。
3.EXPIRE
語法:EXPIRE key seconds
說明:設置指定key的超時時間,超時後該key將會被自動刪除。該操做的時間複雜度爲O(1)。在Redis中,若是一個key與某個超時時間相關聯, 那麼該key將被稱爲是易失的(volatile)。在2.1.3版本以前,已經存在的超時時間是不能被重寫的。所以,若是一個key已經關聯了某個過時 時間,那麼該命令將不會起做用而且返回值爲0。可是自2.1.3版本後,Redis容許更新一個key的超時時間。另外,你可使用PERSIST命令來 移除一個key相關聯的超時時間。
返回值:若是成功設置了超時時間,那麼返回值爲1;若是該key不存在或者不可以設置超時時間,那麼返回值爲0。
數據庫
該命令自0.0.9版本後可用。
4.EXPIREAT
語法:EXPIREAT key timestemp
說明:該操做的時間複雜對爲O(1)。該命令與EXPIRE命令有着相同的語義和效果,兩者惟一的差異是:EXPIREAT命令中指定的並非表示TTL(Time To Live)的秒數,而是一個肯定的UNIX時間戳(即自1970年1月1日以後的秒數)。
返回值:若是成功設置了超時時間,那麼返回值爲1,若是該key不存在或者不可以設置超時時間,那麼返回值爲0。緩存
該命令自1.1版本後可用。
5.KEYS
語法:KEYS pattern
說明:返回與指定模式相匹配的所用的keys。該操做的時間複雜度爲O(N),N爲數據庫中所擁有的keys的個數,並假設數據庫中keys的名稱與給定 的匹配模式均具備有限的長度。雖然該操做的時間複雜度爲O(N),可是此處時間複雜度的常量係數至關低。須要注意的是:在生產環境中使用該命令須要特別注 意,該命令在對規模較大的數據庫進行操做時可能會損害性能。該命令主要是設計用來進行調試和進行特殊的操做,例如更改keyspace的佈局 (layout)等。佈局
該命令所支持的匹配模式以下:
(1)?:用於匹配單個字符。例如,h?llo能夠匹配hello、hallo和hxllo等;
(2)*:用於匹配零個或者多個字符。例如,h*llo能夠匹配hllo和heeeello等;
(3)[]:能夠用來指定模式的選擇區間。例如h[ae]llo能夠匹配hello和hallo,可是不能匹配hillo。
同時,可使用「/」符號來轉義特殊的字符
性能
例如,使用以下命令能夠查看數據庫中的全部keys:keys *測試
返回值:返回匹配指定模式的keys的列表。編碼
該命令自0.0.7版本後可用。
6.MOVE
語法:MOVE key db
說明:將指定的key從當前選擇的數據庫(使用SELECT命令)移動到目標數據庫,該操做的時間複雜度爲O(1)。當該key在目標數據庫中已經存在或 者它在源數據庫中並不存在時,該命令將不進行任何操做。基於此能夠將該命令用做一個鎖定的原語操做(locking primitive)。spa
返回值:若是該key被移至目標數據庫,那麼返回值爲1;若是該key未被移動,那麼返回值爲0。設計
該命令自0.0.7版本後可用。
7.OBJECT
語法:OBJECT subcommand [arguments [arguments ...]]
說明:對於現階段已經實現的子命令而言,時間複雜度均爲O(1)。該命令容許用戶查看與keys相關聯的Redis對象的內部信息。對於調試或者理解 keys是否正在使用特殊編碼的數據類型以便節省空間,該命令很是有用。在使用Redis做爲緩存時,你的應用程序可能須要使用OBJECT命令返回的信 息來實現應用層次的key驅離策略(eviction policies)。
該命令支持多種子命令,以下所示:
(1)OBJECT REFCOUNT <key>:返回對與指定key相關聯的值的引用個數。該命令對用戶進行調試很是有幫助;
(2)OBJECT ENCODING <key>:返回用於存儲與指定key相關聯的值的內部表示類型;
(3)OBJECT IDLETIME <key>:返回與key相關聯的值自存儲以來處於空閒狀態(IDLE)的秒數(未被read或write等操做所請求)。計時器的時間粒度爲10秒,該值在後續版本中可能會發生變化。
對象可使用以下不一樣的方式進行編碼:
(1)string能夠按照正常的字符串編碼格式進行存儲或者使用int類型(表示64位有符號數區間中整數的字符串能夠按照這種方式進行編碼以便節省存儲空間);
(2)lists能夠被編碼爲ziplist或者linkedlist格式。對於規模較小的鏈表而言,可使用ziplist來表示以便節省存儲空間;
(3)sets能夠被編碼爲intset或者hashtable格式。intset做爲一種特別的編碼方式能夠用於僅有整數構成的規模較小的集合中;
(4)hashes能夠被編碼爲zipmap或者hashtable。zipmap能夠用於對規模較小的hashes進行編碼;
(5)sorted sets能夠編碼爲ziplist或者skiplist。對於list類型,規模較小的有序集合(sorted sets)可使用ziplist進行編碼,而skiplist能夠用於對任何大小的有序集合進行編碼。
須要注意的是:你一旦執行了一種使得Redis沒法保持可以節約存儲空間的編碼方式的操做後,全部特殊編碼的類型將會被自動轉換爲普通類型。
返回值:對於不一樣的子命令將會有不一樣的返回值。
(1)對於refcount和idletime子命令,返回值爲整型(integers)。
(2)對於encoding子命令將會返回一個塊回覆(bulk reply)。
(3)若是你要查看的object已經丟失,那麼將會返回一個null塊。調試
能夠經過以下實例進行測試:lpush mylist 「hello world」對象
經過上述測試能夠了解到,Redis 2.2.6版本中對對象處於IDLE狀態的時間統計的時間粒度爲10秒。
該命令自2.2.3版本後可用。
8.PERSIST
語法:PERSIST key
說明:移除與key相關聯的超時時間。該操做的時間複雜度爲O(1)。
返回值:若是超時時間被移除,那麼返回者爲1;若是該key不存在或者沒有與之相關聯的超時時間,那麼返回值將爲0.
該命令自2.1.2版本後可用。
9.RANDOMKEY
語法:RANDOMKEY
說明:從當前選擇的數據庫中返回一個隨機的key。該操做的時間複雜度爲O(1)。
返回值:返回隨機key;若是數據庫爲空時,那麼將返回nil。
該命令的實例以下所示:
該命令自0.0.7版本後可用。
10.RENAME
語法:RENAME key newkey
說明:將指定的key命名爲newkey。該操做的時間複雜度爲O(1)。當源和目標的名稱相同或指定的key不存在時,將會返回一個錯誤。若是newkey已經存在時,它將會被重寫。
返回值:返回Redis定義的狀態碼。
該命令自0.0.7版本後可用。
11.RENAMENX
語法:RENAMENX key newkey
說明:在newkey不存在的狀況下將key命名爲newkey。若是源和目標的名稱相同或者指定的key不存在時返回一個錯誤。該操做的時間複雜度爲O(1)。
返回值:若是key被命名爲newkey,那麼返回值爲1;若是newkey已經存在,那麼返回值爲0。
該命令自0.0.7版本後可用。
12.SORT
語法:SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
說明:返回或按key存儲包含在列表(list)、集合(set)或者有序集合(sorted set)中的元素。該操做的時間複雜度爲O(N+M*log(M)),此處N是將要排序的列表(list)或者集合(set)中元素的個數,而M爲將要返 回的元素個數。在元素未被排序時,複雜度在現階段是O(N)。在下一個發行版本中,其中的拷貝這一步驟將會被避免。
在默認狀況下,排序是數字型的,而且元素經過他們的值進行比較,值被解釋爲雙精度浮點數。
假設mylist是一組數字的列表,最簡單的SORT命令形式以下所示:
SORT mylist
假設mylist中存儲有1-10這些值,使用該命令會有以下的輸出結果:
若是你但願使用降序順序來排列元素,可使用DESC修飾符,以下所示:
SORT mylist DESC
當mylist中包含字符串而且你但願使用字母順序進行排列時,可使用ALPHA修飾符,以下所示:
SORT mylist ALPHA
使用該命令後,會有如下輸出結果:
返回元素的個數能夠經過LIMIT修飾符進行限制。使用該修飾符時須要指定起始元素的偏移值和將要返回的元素的總數。以下所示:
SORT mylist LIMIT 0 5
經過外部keys進行排序
有時候你但願經過使用外部keys做爲權值而並不是比較列表(list)、集合(set)或者有序集合(sorted set)中的真實元素來進行排序。例如,假如
列表mylist中包含元素一、2和3,分別表示存儲在object_一、object_2和object_3中對象的惟一ID。當這些對象具備存儲在 weight_一、weight_2和weight_3中的相關聯的權值時,SORT可使用這些權值來排序mylist。以下所示:
SORT mylist BY weight_*
BY選項選用了一個模式(本例中爲weight_*)來生成用來排序的keys。這些keys的名稱能夠經過取代模式中的「*」符號來加以生成,用於取代「*」符號的值是mylist列表中可以首次匹配模式中的「*」符號的真實值(在本例中爲一、二、和3)。
假設在mylist列表中存有值一、2和3,object_1上存儲有值object_1,object_2上存儲有值 object_2,object_3上存儲有值object_3,weight_1上存儲有值0.87,weight_2上存儲有值3,weight_3 上存儲有值-6.4。以下所示:
使用SORT mylist BY weight_*能夠獲得以下輸出:
(1)跳過排序元素
能夠給BY選項指定一個並不存在的key,這將會使得SORT命令跳過排序操做。這是一種在不進行排序的狀況下取得外部keys的有效方式。以下所示:
SORT mylist BY nosort
(2)獲取外部keys
在一些狀況下,獲取真正的對象而非它們的ID更爲有用(object_一、object_2和object_3)。基於列表(list)、集合(set)或有序集合(sorted set)中的元素獲取外部keys能夠經過使用以下命令來完成:
SORT mylist BY weight_* GET object_*
在使用上述命令後,能夠獲得以下輸出:
GET選項能夠被屢次使用,從而對原有列表(list)、集合(set)或有序集合(sorted set)中的每一個元素取得更多的keys。一樣,使用特殊的模式#,能夠獲取元素自己。以下所示:
SORT mylist BY weight_* GET object_* GET #
使用上述命令後,能夠獲得以下輸出:
(3)存儲排序操做的結果在默認狀況下,SORT向客戶端返回排序後的元素。使用STORE選項,能夠將結果存儲在一個列表中,用戶能夠同時指定與列表相關聯的key。以下所示:SORT mylist BY weight_* SRORE resultkey(4)在BY和GET選項中使用hashes你能夠對hash字段使用BY和GET選項,語法以下:SORT mylist BY weight_*->fieldname GET object_*->fieldname字符串「->」用來區分hash字段名稱和key名稱。返回值:排序元素的列表。該命令自0.0.7版本後可用。13.TTL語法:TTL key說明:若是指定的key有與之相關聯的超時時間,那麼將會返回該key還能存活的時間。該操做的時間複雜度爲O(1)。這一自省能力使得Redis客戶端可以查看一個指定的key還可以做爲dataset的一部分存在多長時間。返回值:以秒爲單位的TTL(Time To Live);若是指定的key不存在或者沒有與之相關聯的超時時間,那麼便會返回-1。該命令自0.1000版本後可用。14. TYPE語法: TYPE key說明:返回存儲在指定key上的值所具備的數據類型的字符串描述。該操做的時間複雜度爲O(1)。數據類型能夠是:string、list、set、zset和hash。返回值:存儲在key上的值的數據類型,若是該key不存在,那麼返回值爲none。該命令自0.0.7版本後可用。