详细成果展示,点击加号和减号可以实现数据的更改,对列表进行重新排序
Java代码里Zset命令实现
// 根据score从高到低返回全部数据
Set<ZSetOperations.TypedTuple<Object>> model = zset.reverseRangeWithScores("model", 0, -1);
// 遍历所有国家,命中,判断奖牌类型,执行减一操作
for (ZSetOperations.TypedTuple<Object> obj : model) {
// 返回 Zset中value的值
obj.getValue();
// 返回 Zset中score的值,Double类型
obj.getScore();
}
// 添加操作,如果value相同 对score进行修改
// redisTemplate.opsForZset.add("key名称", "value名称", double类型score)
zset.add("model", country, obj.getScore() - 10000);
业务逻辑部分
金牌10000,银牌100,铜牌1,当银牌铜牌数量在100以下时是正确的,通过奖牌数量可得到一个值
例如(虚拟数值) 中国/China,金牌52,银牌42,铜牌39
那么则可得出 socre = 524239
存储到Zset中为 “中国/China” “524239”
Redis Desktop Manager中展示
@Controller
public class ModelController {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
@Resource(name = "redisTemplate")
private ZSetOperations<String, Object> zset;
/**
* 获取列表数据
* 金牌10000 银牌100 铜牌1
* @return
*/
@ResponseBody
@RequestMapping("getData")
public Object getData() {
Set<ZSetOperations.TypedTuple<Object>> model = zset.reverseRangeWithScores("model", 0, -1);
List<Model> list = new ArrayList<>();
// 将数据存放到bean中
for (ZSetOperations.TypedTuple<Object> o : model) {
Model m = new Model();
m.setCountry((String) o.getValue());
double score = o.getScore();
m.setGold((int)