当前位置: 首页 > news >正文

软考高级之redis中使用zset实现延迟队列,你答对了么?

实现延迟队列的思路

zset的特性,带有分数的排序,以时间戳作为分数进行排序

  1. 添加任务 zdd
  2. 取出任务 zrangbyscore
  3. 执行任务 zrem

定时任务

  public static void main(String[] args) {Jedis jedis = new Jedis("ip", 6379);TimerTask task = new TimerTask() {@Overridepublic void run() {// 这里是定时任务的执行代码Set<String> order = jedis.zrangeByScore("delayOrderQueue", System.currentTimeMillis()-10000, System.currentTimeMillis());//取出任务进行执行for (String orderId : order) {Long order1 = jedis.zrem("delayOrderQueue", orderId);System.out.println("执行任务:" +  orderId);}}};Timer timer = new Timer();long delay = 0; // 延迟开始执行时间,单位:毫秒long period = 1000; // 定时任务执行间隔,单位:毫秒timer.scheduleAtFixedRate(task,delay,period);}

添加任务

/*** zset实现实现延迟队列*/@Testpublic void TestZet(){long currentTimeMillis = System.currentTimeMillis();System.out.println(currentTimeMillis);jedis.zadd("delayOrderQueue", currentTimeMillis, "1");jedis.zadd("delayOrderQueue", currentTimeMillis+3000, "2");jedis.zadd("delayOrderQueue", currentTimeMillis+5000, "3");}

软考高级之redis中使用zset实现延迟队列,你答对了么?

http://www.lryc.cn/news/353684.html

相关文章:

  • CS 下载安装详解
  • 前端canvas项目实战——在线图文编辑器(十):小地图MiniMap(上)
  • linux的chmod的数字太难记了,用u, g, o, a更简单!
  • 牛客热题:有效括号
  • 利用SQL语句实现多表联合查询——多表关系介绍
  • Java中IO流类的体系
  • 【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】
  • GitLab的原理及应用详解(六)
  • 【调和级数】100321. 优质数对的总数 II
  • Java SE入门及基础(54) 函数式接口
  • 轻松同步:将照片从三星手机传输到iPad的简便方法
  • MySQL查询某个字段含有字母数字的值
  • 通关!游戏设计之道Day14
  • 实现一个自定义 hook,用于强制刷新当前组件
  • 牛客热题:滑动窗口的最大值
  • Adobe产品安装目录修改
  • 时间(空间)复杂度(结构篇)
  • react记录部署
  • 【计算机毕业设计】基于SSM+Vue的校园美食交流系统【源码+lw+部署文档】
  • 「YashanDB迁移体验官」Mysql生产环境迁移至YashanDB数据库深度体验
  • qmt量化交易策略小白学习笔记第4期【qmt如何获取获取行情数据--内置python使用方法】
  • XXE(XML外部实体注入)
  • kafka 案例
  • 别被“涨价“带跑,性价比才是消费真理
  • GEE深度学习——使用Tensorflow进行神经网络DNN土地分类
  • 死锁示例(python、go)
  • Spring Cloud 面试题(五)
  • 源码编译安装LAMP
  • html5网页-浏览器中实现高德地图定位功能
  • C从零开始实现贪吃蛇大作战