W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
SORT 命令的最簡(jiǎn)單執(zhí)行形式為:
SORT <key>
這個(gè)命令可以對(duì)一個(gè)包含數(shù)字值的鍵 key
進(jìn)行排序。
以下示例展示了如何使用 SORT 命令對(duì)一個(gè)包含三個(gè)數(shù)字值的列表鍵進(jìn)行排序:
redis> RPUSH numbers 3 1 2
(integer) 3
redis> SORT numbers
1) "1"
2) "2"
3) "3"
服務(wù)器執(zhí)行 SORT numbers
命令的詳細(xì)步驟如下:
numbers
列表長(zhǎng)度相同的數(shù)組, 該數(shù)組的每個(gè)項(xiàng)都是一個(gè) redis.h/redisSortObject
結(jié)構(gòu), 如圖 IMAGE_CREATE_ARRAY 所示。obj
指針?lè)謩e指向 numbers
列表的各個(gè)項(xiàng), 構(gòu)成 obj
指針和列表項(xiàng)之間的一對(duì)一關(guān)系, 如圖 IMAGE_POINT_OBJ 所示。obj
指針?biāo)赶虻牧斜眄?xiàng)轉(zhuǎn)換成一個(gè) double
類(lèi)型的浮點(diǎn)數(shù), 并將這個(gè)浮點(diǎn)數(shù)保存在相應(yīng)數(shù)組項(xiàng)的 u.score
屬性里面, 如圖 IMAGE_SET_SCORE 所示。u.score
屬性的值, 對(duì)數(shù)組進(jìn)行數(shù)字值排序, 排序后的數(shù)組項(xiàng)按 u.score
屬性的值從小到大排列, 如圖 IMAGE_SORTED 所示。obj
指針?biāo)赶虻牧斜眄?xiàng)作為排序結(jié)果返回給客戶(hù)端: 程序首先訪(fǎng)問(wèn)數(shù)組的索引 0
, 返回 u.score
值為1.0
的列表項(xiàng) "1"
; 然后訪(fǎng)問(wèn)數(shù)組的索引 1
, 返回 u.score
值為 2.0
的列表項(xiàng) "2"
; 最后訪(fǎng)問(wèn)數(shù)組的索引 2
, 返回 u.score
值為3.0
的列表項(xiàng) "3"
。其他 SORT <key>
命令的執(zhí)行步驟也和這里給出的 SORT numbers
命令的執(zhí)行步驟類(lèi)似。
以下是 redisSortObject
結(jié)構(gòu)的完整定義:
typedef struct _redisSortObject {
// 被排序鍵的值
robj *obj;
// 權(quán)重
union {
// 排序數(shù)字值時(shí)使用
double score;
// 排序帶有 BY 選項(xiàng)的字符串值時(shí)使用
robj *cmpobj;
} u;
} redisSortObject;
SORT 命令為每個(gè)被排序的鍵都創(chuàng)建一個(gè)與鍵長(zhǎng)度相同的數(shù)組, 數(shù)組的每個(gè)項(xiàng)都是一個(gè) redisSortObject
結(jié)構(gòu), 根據(jù) SORT 命令使用的選項(xiàng)不同, 程序使用 redisSortObject
結(jié)構(gòu)的方式也不同, 稍后介紹 SORT 命令的各種選項(xiàng)時(shí)我們會(huì)看到這一點(diǎn)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: