Redis SORT排序命令使用方法詳解

來源:互聯網
上載者:User

   對於Redis SORT排序命令 我相信大家都不怎麼瞭解了,因此小編整理了一些Redis SORT排序命令使用方法與例子,希望例子可以對各位玩家帶來協助哦.

  Redis SORT是由Redis提供的一個排序命令。集合中的標籤是無序的,可以使用SORT排序。如:

  redis>SADD jihe 5

  (integer) 1

  redis>SADD jihe 1

  (integer) 1

  redis>SADD jihe 2

  (integer) 1

  redis>SADD jihe 8

  (integer) 1

  redis>SORT jihe

  1) "1"

  2) "2"

  3) "5"

  4) "8"

  如果使用Redis SORT排序的不是數字,是字母,將他們按照字典的順序排名,則需要使用

  SORT jihe ALPHA

  如果不加ALPHA參數,則會報錯,提示:(error) ERR One or more scores can't be converted into double。我們還可以使用關係型資料庫的DESC進行倒序排序和LIMIT offset count來限定擷取的條數

  SORT jihe DESC LIMIT 0 2

  還可以對Redis SORT命令添加BY參數。一條語句只能有一個BY參數。這時,SORT不會根據自身的值排序,比如(1,5,2,8和a,A,g,B),而是根據指定的另一個鍵中的欄位來排序。如:

  SORT tag:redis:article BY article:*->time DESC

  解釋:根據tag:redis:article中的值(tag是redis的文章ID),來組合成一個新的key就是article:(ag:redis:article中的一個值):time。擷取到tag是redis的文章ID列表,然後根據他們的發布時間來排序。

  Redis SORT命令還有個GET參數,GET參數類似在關係型資料庫中的關聯查詢。比如查詢tag是redis的文章ID列表,將列表根據發布時間倒序排序,然後擷取每個文章的標題。GET可以有多個:

  SORT tag:redis:article BY article:*->time DESC GET article:*->title GET article:*->time GET #

  GET #的意思是,將文章ID返回回來,你可以寫GET article:*->id,也可以寫GET #。

  Redis SORT命令還有個參數是STORE,是將排序後的內容儲存到一個新的key中。新key的類型是清單類型,如果存在則會覆蓋。這個時候可以用EXPIRE來設定緩衝:

  SORT tag:redis:article BY article:*->time DESC GET article:*->title GET article:*->time GET # STORE resultKey

  Redis的SORT命令是Redis最複雜最強大的命令之一,時間複雜度是O(n+mLOGm)。n是待排序的列表長度,m是返回的元素個數。減少n和m會提高SORT的效能。

  補充:

  1,適合全體類型的命令

  EXISTS key 判斷一個鍵是否存在;存在返回 1;否則返回0;

  DEL key 刪除某個key,或是一系列key;DEL key1 key2 key3 key4

  TYPE key 返回某個key元素的資料類型 ( none:不存在,string:字元,list,set,zset,hash)

  KEYS pattern 返回匹配的key列表 (KEYS foo*:尋找foo開頭的keys)

  RANDOMKEY 隨機獲得一個已經存在的key,如果當前資料庫為空白,則返回Null 字元串

  RENAME oldname newname更改key的名字,新鍵如果存在將被覆蓋

  RENAMENX oldname newname 更改key的名字,如果名字存在則更改失敗

  DBSIZE返回當前資料庫的key的總數

  EXPIRE設定某個key的到期時間(秒),(EXPIRE bruce 1000:設定bruce這個key1000秒後系統自動刪除)注意:如果在還沒有到期的時候,對值進行了改變,那麼那個值會被清除。

  TTL尋找某個key還有多長時間到期,返回時間秒

  SELECT index 選擇資料庫

  MOVE key dbindex 將指定鍵從當前資料庫移到目標資料庫 dbindex。成功返回 1;否則返回0(來源資料庫不存在key或目標資料庫已存在同名key);

  FLUSHDB 清空當前資料庫中的所有鍵

  FLUSHALL 清空所有資料庫中的所有鍵

  2,處理字串的命令

  SET key value 給一個鍵設定字串值。SET keyname datalength data (SET bruce 10 paitoubing:儲存key為burce,字串長度為10的一個字串paitoubing到資料庫),data最大不可超過1G。

  GET key擷取某個key 的value值。如key不存在,則返回字串”nil”;如key的值不為字串類型,則返回一個錯誤。

  GETSET key value可以理解成獲得的key的值然後SET這個值,更加方便的操作 (SET bruce 10 paitoubing,這個時候需要修改bruce變成1234567890並擷取這個以前的資料paitoubing,GETSET bruce 10 1234567890)

  MGET key1 key2 … keyN 一次性返回多個鍵的值

  SETNX key value SETNX與SET的區別是SET可以建立與更新key的value,而SETNX是如果key不存在,則建立key與value資料

  MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設定多個鍵和值

  MSETNX key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設定多個鍵和值(目標鍵不存在情況下,如果有一個以上的key已存在,則失敗)

  INCR key 自增索引值

  INCRBY key integer 令索引值自增指定數值

  DECR key 自減索引值

  DECRBY key integer 令索引值自減指定數值

  3,處理 lists 的命令

  RPUSH key value 從 List 尾部添加一個元素(如序列不存在,則先建立,如已存在同名Key而非序列,則返回錯誤)

  LPUSH key value 從 List 頭部添加一個元素

  LLEN key 返回一個 List 的長度

  LRANGE key start end從自定的範圍內返回序列的元素 (LRANGE testlist 0 2;返回序列testlist前0 1 2元素)

  LTRIM key start end修剪某個範圍之外的資料 (LTRIM testlist 0 2;保留0 1 2元素,其餘的刪除)

  LINDEX key index返回某個位置的序列值(LINDEX testlist 0;返回序列testlist位置為0的元素)

  LSET key index value更新某個位置元素的值

  LREM key count value 從 List 的頭部(count正數)或尾部(count負數)刪除一定數量(count)匹配value的元素,返回刪除的元素數量。

  LPOP key 彈出 List 的第一個元素

  RPOP key 彈出 List 的最後一個元素

  RPOPLPUSH srckey dstkey 彈出 _srckey_ 中最後一個元素並將其壓入 _dstkey_頭部,key不存在或序列為空白則返回”nil”

  4,處理集合(sets)的命令(有索引無序序列)

  SADD key member增加元素到SETS序列,如果元素(membe)不存在則添加成功 1,否則失敗 0;(SADD testlist 3 n one)

  SREM key member 刪除SETS序列的某個元素,如果元素不存在則失敗0,否則成功 1(SREM testlist 3 N one)

  SPOP key 從集合中隨機彈出一個成員

  SMOVE srckey dstkey member 把一個SETS序列的某個元素移動到另外一個SETS序列 (SMOVE testlist test 3n two;從序列testlist移動元素two到 test中,testlist中將不存在two元素)

  SCARD key 統計某個SETS的序列的元素數量

  SISMEMBER key member 獲知指定成員是否存在於集合中

  SINTER key1 key2 … keyN 返回 key1, key2, …, keyN 中的交集

  SINTERSTORE dstkey key1 key2 … keyN 將 key1, key2, …, keyN 中的交集存入 dstkey

  SUNION key1 key2 … keyN 返回 key1, key2, …, keyN 的並集

  SUNIONSTORE dstkey key1 key2 … keyN 將 key1, key2, …, keyN 的並集存入 dstkey

  SDIFF key1 key2 … keyN 依據 key2, …, keyN 求 key1 的差集。官方例子:

  key1 = x,a,b,c

  key2 = c

  key3 = a,d

  SDIFF key1,key2,key3 => x,b

  SDIFFSTORE dstkey key1 key2 … keyN 依據 key2, …, keyN 求 key1 的差集並存入 dstkey

  SMEMBERS key 返回某個序列的所有元素

  SRANDMEMBER key 隨機返回某個序列的元素

  5,處理有序集合(sorted sets)的命令 (zsets)

  ZADD key score member 添加指定成員到有序集合中,如果目標存在則更新score(分值,排序用)

  ZREM key member 從有序集合刪除指定成員

  ZINCRBY key increment member 如果成員存在則將其增加_increment_,否則將設定一個score為_increment_的成員

  ZRANGE key start end 返回升序排序後的指定範圍的成員

  ZREVRANGE key start end 返回降序排序後的指定範圍的成員

  ZRANGEBYSCORE key min max 返回所有符合score >= min和score <= max的成員 ZCARD key 返回有序集合的元素數量 ZSCORE key element 返回指定成員的SCORE值 ZREMRANGEBYSCORE key min max 刪除符合 score >= min 和 score <= max 條件的所有成員

  6,hash類型

  Command Parameters Description

  HSET key field value Set the hash field to the specified value. Creates the hash if needed.

  HGET key field Retrieve the value of the specified hash field.

  HMGET key field1 … fieldN Get the hash values associated to the specified fields.

  HMSET key field1 value1 … fieldN valueN Set the hash fields to their respective values.

  HINCRBY key field integer Increment the integer value of the hash at key on field with integer.

  HEXISTS key field Test for existence of a specified field in a hash

  HDEL key field Remove the specified field from a hash

  HLEN key Return the number of items in a hash.

  HKEYS key Return all the fields in a hash.

  HVALS key Return all the values in a hash.

  HGETALL key Return all the fields and associated values in a hash.

  7,排序(List, Set, Sorted Set)

  SORT key BY pattern LIMIT start end GET pattern ASC|DESC ALPHA 按照指定模式排序集合或List

  SORT mylist DESC 降序

  SORT mylist LIMIT 0 10 從序號0開始,取10條

  SORT mylist LIMIT 0 10 ALPHA DESC 按首字元排序

  SORT mylist BY weight_* STORE resultkey 將返回的結果存放於resultkey序列(List)

  8,持久控制

  SAVE 同步儲存資料到磁碟

  BGSAVE 非同步儲存資料到磁碟

  LASTSAVE 返回上次成功儲存到磁碟的Unix時間戳記

  SHUTDOWN 同步儲存到伺服器並關閉 Redis 伺服器(SAVE+QUIT)

  BGREWRITEAOF 當記錄檔過長時重寫記錄檔

  9,遠端控制命令

  INFO 提供伺服器的資訊和統計資訊

  MONITOR 即時輸出所有收到的請求

  SLAVEOF 修改複製選項

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.