为了账号安全,请及时绑定邮箱和手机立即绑定

redis可以对key排序吗

redis可以对key排序吗

鸿蒙传说 2019-04-07 11:18:14
hsetuser:1score100hsetuser:2socre101hsetuser:3score200hsetuser:4score201要找出socre最高的user,应该如何设计。
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

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-07
  • 2 回答
  • 0 关注
  • 940 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号