Redis 排序的格式如下:
SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]
其中by參數用于指定排序的字段,默認通過本身的hash值進行排序,也可以自己指定字段,包括自己本身的字段和別的key的字段,常用于一些排名操作。其中*表示通配符,類似于正則表達式中的*,->用于連接具體的字段。例如:
?sort userids ?by 'user_score_*' ?get # get 'user_name_*' get 'user_score_*'
userids 存儲著user的id 1,2,3
user_name_*存儲user姓名 例如 user_name_1 XX ?表示userid為1的姓名
user_score_*存儲user分數?例如 user_score_1 XX? 表示userid為1的分數
這個操作可以通過用戶的分數講用戶的id,姓名,分數顯示出來
LIMIT參數用于限制排序以后返回元素的數量,功能類似于SQL中的limit。該參數接受另外兩個參數,即offset和count,LIMIT offset count表示跳過前offset個元素,返回之后的連續count個元素。可見,LIMIT參數可以用于實現分頁功能
GET參數用于返回指定的字段值。使用BY參數對集合中的所有哈希鍵按照哈希結構中的字段排序后,SORT命令返回所有排序之后的哈希鍵。如果某個請求需要不是鍵而是某些字段值,這時就要使用GET參數,使SORT命令返回指定字段值。
SORT用集合中的每個值(即每個哈希鍵)替換GET參數之后的第一個“*”,并將其作為返回值。值得注意的是,利用GET #能夠得到集合中的哈希鍵本身。例如用userid中的id替換user_score_的值
ASC和DESC參數用于指定排序順序(默認為ASC,即從低到高),ALPHA參數用于按照字典順序排列非數字元素。
STORE參數用于將SORT命令的返回值,即排序結果存入一個指定的列表。加上STORE參數后,SORT命令的返回值就變為排序結果的個數