zoukankan      html  css  js  c++  java
  • 定时任务,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();
        }
    }
  • 相关阅读:
    selenium===介绍
    工具安装===Sublime Text-安装
    Django===django工作流
    python基础=== itertools介绍(转载)
    python基础===如何优雅的写代码(转自网络)
    python基础===一道小学奥数题的解法
    python基础===列表类型的所有方法
    python基础===通过菲波那契数列,理解函数
    python基础===字符串切片
    安全测试===BurpSuite使用教程-附安装包
  • 原文地址:https://www.cnblogs.com/li-yan-long/p/14102600.html
Copyright © 2011-2022 走看看