国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

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

2024-07-24 12:42:43
字體:
來源:轉載
供稿:網友

   對于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,如果當前數據庫為空,則返回空字符串

  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 返回降序排序后的指定范圍的成員

共2頁上一頁12下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌兰浩特市| 闸北区| 泰和县| 海林市| 马关县| 米脂县| 九江市| 通州市| 平利县| 子洲县| 嘉兴市| 彭泽县| 东宁县| 西安市| 合作市| 平和县| 运城市| 新闻| 茌平县| 顺义区| 安化县| 南涧| 满城县| 色达县| 普兰店市| 绥德县| 新昌县| 兴安盟| 图片| 宁城县| 密云县| 出国| 晋宁县| 集贤县| 乌什县| 隆林| 文登市| 灯塔市| 渑池县| 苗栗市| 商都县|