亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

redis可以對key排序嗎

redis可以對key排序嗎

皈依舞 2019-04-16 16:46:10
hsetuser:1score100hsetuser:2socre101hsetuser:3score200hsetuser:4score201要找出socre最高的user,應該如何設計。
查看完整描述

2 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

hset是不能直接排序的。有替代方案可以實現相當于hset排序的效果,即利用sort功能。sort一般只能對list,set和zset排序,不過可以變通一下。sort的使用方式如下:
SORTkey[BYpattern][LIMIToffsetcount][GETpattern[GETpattern...]][ASC|DESC][ALPHA][STOREdestination]
注意它的by和store兩個參數。by用于確定按照什么字段進行排序,store則能夠把排序結果存到一個list中。你可以先把所有的hash鍵存到一個set中,比如說,這個set的鍵名為myhashes,然后按照set中每個元素(即每個hash)的score域進行排序,最后把排序結果存到鍵名為myresult的list中。這里的排序結果當然就是set中所有元素(即所有hash鍵)的鍵名了,用GET參數加#就能得到set中所有元素的鍵名,寫出來就是這樣:
SORTmyhashesBY*->scoreGET#STOREmyresult
SORT會用myhashes中的每個值(即每個hash鍵名)替換BY參數中的*,并根據->后面給出的字段獲取其值,最后根據這些字段值對myhashes中的每個值進行排序。這樣,myresult中就是已經按照score排好序的hash鍵名了。
最后,我看你的hash設計有點問題。hash比較像sql數據庫的一行,有多個域,每個域有相應的值。如果你只是一個score域,可以考慮用zset。
                            
查看完整回答
反對 回復 2019-04-16
  • 2 回答
  • 0 關注
  • 364 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號