Redis做多字段排序的示例:在redis编辑器中添加以下代码:package com.example.demo;import com.example.demo.common.Constant;import com.example.demo
在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
--结束END--
本文标题: redis如何做多字段排序
本文链接: https://lsjlt.com/news/116473.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0