相关的几个问题【延时任务】
1、为什么任务需要存储在数据库中?
延时任务是一个通用的服务,任何有延迟需求的任务都可以调用该服务,内存数据库的存储是有限的,需要考虑数据持久化的问题,存储数据库中是一种数据安全的考虑。
2、为什么使用 redis 中的两种数据类型,list 和 zset?
原因一:list 存储立即执行的任务,zset 存储未来的数据
原因二:任务量过大以后,zset 的性能会下降
时间复杂度:执行时间(次数)随着数据规模增长的变化趋势
操作 redis 中的 list 命令 LPUSH :时间复杂度:O(1)
操作 redis 中的 zset 命令 zadd:时间复杂度:O(M*log(n))
说明 | |
O(1) | 常量级复杂度,执行次数与数据规模没有关系 |
O(M*log(n)) | 对数级复杂度,执行次数与数据规模是对数关系 |
3、在添加 zset 数据的时候,为什么需要预加载?
如果任务数据特别大,为了防止阻塞,只需要把未来几分钟要执行的数据存入缓存即可,是一种优化的形式。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通