当前位置: 首页 > 面试题库 >

使用Redis延迟执行/调度?

唐炜
2023-03-14
问题内容

有什么技巧可以基于Redis延迟任务执行(即计划)?

也许一些聪明的方法可以将BLPOP延迟给定的秒数?


问题答案:

您可以使用名称中带有时间成分的多个LIST环。作为时间成分,您可以采用当前秒(0-59)。

您总是将任务添加到当前秒的列表中。要获得作业,请仅在保证内容早于给定秒数的那些列表上执行BLPOP(低超时)。

如果您在多个主机上工作,则必须注意时钟是同步的(NTP)。



 类似资料:
  • 问题内容: 我正在使用该工具观察Redis服务器的延迟。这是一个例子: 问题是,这些值实际上意味着什么?我正在努力寻找有关此工具的文档,而该文档无法通过该工具自己的帮助文档获得。 问题答案: 该命令是一个工具,可以帮助您解决和了解Redis可能遇到的延迟问题。通过测量Redis服务器响应Redis PING命令的时间(以毫秒为单位)来实现。 在这种情况下,延迟是客户端发出命令的时间与客户端收到对命

  • 问题内容: 我正在测试Django + Celery,您好是世界示例。使用RabbitMQcelery可以正常工作,但是当我切换到Redis经纪人/结果时,我得到以下信息: settings.py task.py 上面的测试中有什么问题吗? 问题答案: 我发现解决方案是源代码:http : //docs.celeryproject.org/en/latest/_modules/celery/res

  • 问题内容: 下面的代码用于将另一个视图控制器推入导航堆栈。 使用时,第一次的速度明显较慢(〜3秒),但随后的每次速度都相当快。其他SO职位建议确保序号发生在代码完成的主线程上,但这不能解决问题。 但是,使用不会引起延迟。 第一次和后续推送的代码相同。 尝试消隐目标视图控制器,但仍然存在,但不存在滞后。 如何解决延迟? 没有延迟: 首次显示SendViewController时导致延迟: 问题答案:

  • 延迟调用一个函数,直到当前调用堆栈已经清除。 使用 setTimeout() ,超时时间为1ms,将新事件添加到浏览器事件队列,并允许渲染引擎完成其工作。使用展开 (...) 运算符为函数提供任意数量的参数。 const defer = (fn, ...args) => setTimeout(fn, 1, ...args); // Example A: defer(console.log, 'a

  • Go 语言中没有提供其它面向对象语言的析构函数,但是 Go 语言提供了 defer 语句用于实现其它面向对象语言析构函数的功能 defer 语句常用于 释放资源、解除锁定 以及 错误处理 等 例如C语言中我们申请了一块内存空间,那么不使用时我们就必须释放这块存储空间 例如C语言中我们打开了一个文件,那么我们不使用时就要关闭这个文件 例如C语言中我们打开了一个数据库, 那么我们不使用时就要关闭这个数

  • 问题内容: 运行上面的代码后,未执行,我的意思是文本字段未将其文本设置为“ START”, 为什么? 如何解决呢? 问题答案: 请记住,该按钮在JavaFX线程上被调用,因此您实际上将UI线程暂停了5秒钟。在这五秒钟的末尾取消冻结UI线程时,将同时应用这两个更改,因此最终只能看到第二个。 您可以通过在新线程中运行以上所有代码来解决此问题: