定时任务,redis排序

我的项目中就用的这种代码,只不过是将属性都修饰成私有的而已。

package com.cjhd.bv.push.web;

import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import java.util.stream.Collectors;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.cjhd.bv.database.response.RestfullApi;
import com.cjhd.bv.database.response.RestfullApiHelper;
import com.cjhd.bv.database.response.ResultStatus;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("/test")
@Api("测试")
public class Testsssssss {

    @Autowired
    private RestfullApiHelper restfullApiHelper;
    
    @Autowired
    private RedisTemplate<String, String> redisTemplate;
    

    private ZSetOperations<String, String> zset;
    
    @PostConstruct // 在最后初始化
    public void init() {
        zset = redisTemplate.opsForZSet();
    }
    
    @ApiOperation(value = "测试", notes = "排行榜")
    @RequestMapping(value = "/t1", method = RequestMethod.POST)
    @ApiImplicitParams({
        @ApiImplicitParam(name = "state", value = "状态", required = true, dataType = "boolean", paramType = "query")})
    public void/*RestfullApi<List<String>>*/ loginByPsw(boolean state) throws Exception {
        //return restfullApiHelper.transform(ResultStatus.SUCCESS, list);
        data("hahahhaha");
        if(state) {
            startTimers();
        }else {
            stopTimers();
        }
    }
    
    //使用Rides中的ZSet对数据进行读写。
    public void data(String key) {
        //往ZSet中存数据,三个参数:key用来标识哪个zset,“4”表示这条数据的key,33表示需要排序的值。
        zset.add(key, "4", 33);
        zset.add(key, "3", 32);
        zset.add(key, "5", 36);
        zset.add(key, "2", 29);
        zset.add(key, "1", 166);
        zset.add(key, "1", 11);
        zset.add(key, "4", 304);
        System.out.println(zset.size(key));
        //将排过序的数据取出来,指定索引范围,倒序。key用来标识redis中的ZSet,0和3分别表示从索引0去到索引3含头含尾。
        List<String> list = zset.reverseRange(key,0,3).stream().collect(Collectors.toList());
    }
    
    Timer timer;
    boolean isOpen = false;
    public void startTimers() {
        if(isOpen) {
            stopTimers();
        }
        isOpen = true;
        timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                List<String> list = zset.reverseRange("hahahhaha",0,3).stream().collect(Collectors.toList());
                System.out.println(list);
            }
        }, 0, 1000);
    }
    
    public void stopTimers() {
        timer.cancel();
    }
}

 

posted @ 2020-12-08 14:50  ~~mr.li~~  阅读(182)  评论(0编辑  收藏  举报