Redis SORT排序命令使用方法詳解
來(lái)源:易賢網(wǎng) 閱讀:21529 次 日期:2015-02-12 11:51:12
溫馨提示:易賢網(wǎng)小編為您整理了“Redis SORT排序命令使用方法詳解”,方便廣大網(wǎng)友查閱!

對(duì)于Redis SORT排序命令 我相信大家都不怎么了解了,因此小編整理了一些Redis SORT排序命令使用方法與例子,希望例子可以對(duì)各位玩家?guī)?lái)幫助哦.

Redis SORT是由Redis提供的一個(gè)排序命令。集合中的標(biāo)簽是無(wú)序的,可以使用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排序的不是數(shù)字,是字母,將他們按照字典的順序排名,則需要使用

SORT jihe ALPHA

如果不加ALPHA參數(shù),則會(huì)報(bào)錯(cuò),提示:(error) ERR One or more scores can't be converted into double。我們還可以使用關(guān)系型數(shù)據(jù)庫(kù)的DESC進(jìn)行倒序排序和LIMIT offset count來(lái)限定獲取的條數(shù)

SORT jihe DESC LIMIT 0 2

還可以對(duì)Redis SORT命令添加BY參數(shù)。一條語(yǔ)句只能有一個(gè)BY參數(shù)。這時(shí),SORT不會(huì)根據(jù)自身的值排序,比如(1,5,2,8和a,A,g,B),而是根據(jù)指定的另一個(gè)鍵中的字段來(lái)排序。如:

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

解釋:根據(jù)tag:redis:article中的值(tag是redis的文章ID),來(lái)組合成一個(gè)新的key就是article:(ag:redis:article中的一個(gè)值):time。獲取到tag是redis的文章ID列表,然后根據(jù)他們的發(fā)布時(shí)間來(lái)排序。

Redis SORT命令還有個(gè)GET參數(shù),GET參數(shù)類似在關(guān)系型數(shù)據(jù)庫(kù)中的關(guān)聯(lián)查詢。比如查詢tag是redis的文章ID列表,將列表根據(jù)發(fā)布時(shí)間倒序排序,然后獲取每個(gè)文章的標(biāo)題。GET可以有多個(gè):

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

GET #的意思是,將文章ID返回回來(lái),你可以寫(xiě)GET article:*->id,也可以寫(xiě)GET #。

Redis SORT命令還有個(gè)參數(shù)是STORE,是將排序后的內(nèi)容存儲(chǔ)到一個(gè)新的key中。新key的類型是列表類型,如果存在則會(huì)覆蓋。這個(gè)時(shí)候可以用EXPIRE來(lái)設(shè)置緩存:

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

Redis的SORT命令是Redis最復(fù)雜最強(qiáng)大的命令之一,時(shí)間復(fù)雜度是O(n+mLOGm)。n是待排序的列表長(zhǎng)度,m是返回的元素個(gè)數(shù)。減少n和m會(huì)提高SORT的性能。

補(bǔ)充:

1,適合全體類型的命令

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

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

TYPE key 返回某個(gè)key元素的數(shù)據(jù)類型 ( none:不存在,string:字符,list,set,zset,hash)

KEYS pattern 返回匹配的key列表 (KEYS foo*:查找foo開(kāi)頭的keys)

RANDOMKEY 隨機(jī)獲得一個(gè)已經(jīng)存在的key,如果當(dāng)前數(shù)據(jù)庫(kù)為空,則返回空字符串

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

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

DBSIZE返回當(dāng)前數(shù)據(jù)庫(kù)的key的總數(shù)

EXPIRE設(shè)置某個(gè)key的過(guò)期時(shí)間(秒),(EXPIRE bruce 1000:設(shè)置bruce這個(gè)key1000秒后系統(tǒng)自動(dòng)刪除)注意:如果在還沒(méi)有過(guò)期的時(shí)候,對(duì)值進(jìn)行了改變,那么那個(gè)值會(huì)被清除。

TTL查找某個(gè)key還有多長(zhǎng)時(shí)間過(guò)期,返回時(shí)間秒

SELECT index 選擇數(shù)據(jù)庫(kù)

MOVE key dbindex 將指定鍵從當(dāng)前數(shù)據(jù)庫(kù)移到目標(biāo)數(shù)據(jù)庫(kù) dbindex。成功返回 1;否則返回0(源數(shù)據(jù)庫(kù)不存在key或目標(biāo)數(shù)據(jù)庫(kù)已存在同名key);

FLUSHDB 清空當(dāng)前數(shù)據(jù)庫(kù)中的所有鍵

FLUSHALL 清空所有數(shù)據(jù)庫(kù)中的所有鍵

2,處理字符串的命令

SET key value 給一個(gè)鍵設(shè)置字符串值。SET keyname datalength data (SET bruce 10 paitoubing:保存key為burce,字符串長(zhǎng)度為10的一個(gè)字符串paitoubing到數(shù)據(jù)庫(kù)),data最大不可超過(guò)1G。

GET key獲取某個(gè)key 的value值。如key不存在,則返回字符串”nil”;如key的值不為字符串類型,則返回一個(gè)錯(cuò)誤。

GETSET key value可以理解成獲得的key的值然后SET這個(gè)值,更加方便的操作 (SET bruce 10 paitoubing,這個(gè)時(shí)候需要修改bruce變成1234567890并獲取這個(gè)以前的數(shù)據(jù)paitoubing,GETSET bruce 10 1234567890)

MGET key1 key2 … keyN 一次性返回多個(gè)鍵的值

SETNX key value SETNX與SET的區(qū)別是SET可以創(chuàng)建與更新key的value,而SETNX是如果key不存在,則創(chuàng)建key與value數(shù)據(jù)

MSET key1 value1 key2 value2 … keyN valueN 在一次原子操作下一次性設(shè)置多個(gè)鍵和值

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

INCR key 自增鍵值

INCRBY key integer 令鍵值自增指定數(shù)值

DECR key 自減鍵值

DECRBY key integer 令鍵值自減指定數(shù)值

3,處理 lists 的命令

RPUSH key value 從 List 尾部添加一個(gè)元素(如序列不存在,則先創(chuàng)建,如已存在同名Key而非序列,則返回錯(cuò)誤)

LPUSH key value 從 List 頭部添加一個(gè)元素

LLEN key 返回一個(gè) List 的長(zhǎng)度

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

LTRIM key start end修剪某個(gè)范圍之外的數(shù)據(jù) (LTRIM testlist 0 2;保留0 1 2元素,其余的刪除)

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

LSET key index value更新某個(gè)位置元素的值

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

LPOP key 彈出 List 的第一個(gè)元素

RPOP key 彈出 List 的最后一個(gè)元素

RPOPLPUSH srckey dstkey 彈出 _srckey_ 中最后一個(gè)元素并將其壓入 _dstkey_頭部,key不存在或序列為空則返回”nil”

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

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

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

SPOP key 從集合中隨機(jī)彈出一個(gè)成員

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

SCARD key 統(tǒng)計(jì)某個(gè)SETS的序列的元素?cái)?shù)量

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 依據(jù) key2, …, keyN 求 key1 的差集。官方例子:

key1 = x,a,b,c

key2 = c

key3 = a,d

SDIFF key1,key2,key3 => x,b

SDIFFSTORE dstkey key1 key2 … keyN 依據(jù) key2, …, keyN 求 key1 的差集并存入 dstkey

SMEMBERS key 返回某個(gè)序列的所有元素

SRANDMEMBER key 隨機(jī)返回某個(gè)序列的元素

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

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

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

ZINCRBY key increment member 如果成員存在則將其增加_increment_,否則將設(shè)置一個(gè)score為_(kāi)increment_的成員

ZRANGE key start end 返回升序排序后的指定范圍的成員

ZREVRANGE key start end 返回降序排序后的指定范圍的成員

ZRANGEBYSCORE key min max 返回所有符合score >= min和score <= max的成員 ZCARD key 返回有序集合的元素?cái)?shù)量 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 從序號(hào)0開(kāi)始,取10條

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

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

8,持久控制

SAVE 同步保存數(shù)據(jù)到磁盤(pán)

BGSAVE 異步保存數(shù)據(jù)到磁盤(pán)

LASTSAVE 返回上次成功保存到磁盤(pán)的Unix時(shí)間戳

SHUTDOWN 同步保存到服務(wù)器并關(guān)閉 Redis 服務(wù)器(SAVE+QUIT)

BGREWRITEAOF 當(dāng)日志文件過(guò)長(zhǎng)時(shí)重寫(xiě)日志文件

9,遠(yuǎn)程控制命令

INFO 提供服務(wù)器的信息和統(tǒng)計(jì)信息

MONITOR 實(shí)時(shí)輸出所有收到的請(qǐng)求

SLAVEOF 修改復(fù)制選項(xiàng)

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看數(shù)據(jù)庫(kù)
易賢網(wǎng)手機(jī)網(wǎng)站地址:Redis SORT排序命令使用方法詳解
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門(mén)公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)