Redis 小demo 通过Zset实现 奥运奖牌排行榜 动态排序

详细成果展示,点击加号和减号可以实现数据的更改,对列表进行重新排序
在这里插入图片描述
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)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值