首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Bull在Redis队列上设置TTL的能力?

使用Bull在Redis队列上设置TTL的能力?
EN

Stack Overflow用户
提问于 2021-12-01 21:46:39
回答 1查看 577关注 0票数 0

我有一个应用程序使用Bull作为队列。是否有一个参数,我可以传递它来为每个条目在创建时自动设置一个TTL (生存时间)?

代码语言:javascript
运行
复制
const Queue = require('bull')
const webApiQueue = new Queue('webApi', {redis: REDIS_URL })

// Producer
const webApiProducer = (data) => {
  webApiQueue.add(data, { lifo: true })
}

如果直接使用Redis设置密钥,则使用setex key_name 10000 key_data

但我怎样才能在公牛中实现这样的目标呢?它只是一个API处理队列,我希望它在24小时后自动删除条目。

我在文档中没有看到任何东西:https://github.com/OptimalBits/bull#documentation

EN

回答 1

Stack Overflow用户

发布于 2022-04-01 01:20:29

据我所知,在Redis键上显式设置TTL (例如24小时)并不是解决这个问题的推荐方法。

似乎规范的方法是只在必要时清除键(例如,当内存耗尽时)。

这份公牛报给我指明了正确的方向。

如果希望更多地管理Bull的内存,那么请合理地尝试将removeOnCompleteremoveOnFail指定为在文件中讨论 (请注意,两者都默认为false)。

另一种完全不同的方法是通过将maxmemory-policy设置为allkeys-lru来解决Redis配置中的内存管理问题,就像在Redis文档中讨论的那样。

如果您使用的是AWS ElastiCache,那么在这些技术上使用Amazon有一些文档默认情况下将导致Bull内存问题,因为Bull不设置TTL。我建议将其更改为allkeys-lru

就其价值而言,我的猜测是,最具表现力的解决方案是在Redis/ maxmemory-policy guess配置中修改。这样,Redis本身就是在管理键,而不是Bull为已完成/失败的作业删除增加开销。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70191626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档