1. 程式人生 > 實用技巧 >定時任務,redis排序

定時任務,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(); } }