redis如何做多字段排序
redis做多字段排序的示例:
在redis编辑器中添加以下代码:
package com.example.demo;
import com.example.demo.common.Constant;
import com.example.demo.mapper.QuestionAnswerHistoryMapper;
import com.example.demo.model.QuestionAnswerHistory;
import com.example.demo.service.QuestionAnswerHistoryService;
import com.example.demo.thread.BaseTest;
import org.apache.commons.lang3.RandomUtils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.math.BigDecimal;
import java.util.List;
public class QuestionAnswerHistoryTest extends BaseTest {
@Autowired
private QuestionAnswerHistoryMapper historyMapper;
@Autowired
private QuestionAnswerHistoryService historyService;
@Test
public void test() {
for (int i = 1; i < 101; i++) {
QuestionAnswerHistory history = new QuestionAnswerHistory();
history.setUserId((long) i);
history.setAnswerFinish(true);
BigDecimal bigDecimal = BigDecimal.valueOf(RandomUtils.nextDouble(0, 1))
.setScale(2, BigDecimal.ROUND_HALF_UP);
history.setCorrectRate(bigDecimal.doubleValue());
history.setTimeConsumed(RandomUtils.nextInt(15, 50));
history.setTimeConsumedMillisecond(RandomUtils.nextInt(0, 1000));
history.setStatus(Constant.GenerictStatus.NORMAL);
historyMapper.insert(history);
}
}
@Test
public void queryRanking() {
Listranking = historyService.getRanking();
for (QuestionAnswerHistory history : ranking) {
System.out.println(history.getUserId() + "\t" + history.getCorrectRate() + "\t" + history.getTimeConsumed() +
"\t" + history.getTimeConsumedMillisecond());
}
}
@Test
public void updateRank() {
Long userId = 25L;
//生成新的答题记录
QuestionAnswerHistory history = new QuestionAnswerHistory();
history.setUserId(userId);
history.setAnswerFinish(true);
BigDecimal bigDecimal = BigDecimal.valueOf(RandomUtils.nextDouble(0, 1))
.setScale(2, BigDecimal.ROUND_HALF_UP);
history.setCorrectRate(bigDecimal.doubleValue());
history.setTimeConsumed(RandomUtils.nextInt(15, 50));
history.setTimeConsumedMillisecond(RandomUtils.nextInt(0, 1000));
history.setStatus(Constant.GenerictStatus.NORMAL);
historyService.updateRank(history);
}
}
输入结果:
id 正确率 耗时
74 0.94 38 151
37 0.93 16 802
97 0.92 31 475
63 0.92 36 74
35 0.92 39 516
85 0.92 39 525
17 0.9 19 821
55 0.9 35 268
64 0.89 37 39
19 0.88 43 350
49 0.86 25 373
78 0.86 42 296
76 0.84 19 399
21 0.84 38 365
54 0.83 26 7
70 0.79 30 213
20 0.78 18 112
46 0.78 24 789
27 0.76 23 195
33 0.76 29 414
7 0.75 20 661
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341