Node + redis 如何执行定时任务

在做一个每日热点新闻的功能,每条新闻的浏览量以news_${id}的key形式存在redis中,这时我需要在每天0点取清除所有news_${id}形式的key。应该如何实现呢~

阅读 3k
2 个回答

跟node其实没什么关系,因为也不知道你用的什么adapter连接redis。从redis来讲,就是keys news_*获取所有你要的key,然后再挨个删除;另一种方法是自动删除,你更新浏览量时设置一个TTL让这个key恰好在0点过期。

第二种方法不要直接使用,在并发浏览较多时可能会有问题,比如把昨天的浏览量带到今天什么的。要用第二种方法的话你要在key里面包含日期,比如news_2020_03_03_<id>,这样就不会有问题了。另外,根据你存储的数据的含义,建议你把key改成news_view_<date>_<id>

  1. 一般来说跑定时任务都用 crontab,是系统级别的工具,和 node.js 无关
  2. crontab 可以用 这个工具 帮助设置
  3. 但你的问题其实不该这么解决,理论上说每天的浏览量都有价值,应该长期保存。建议你把 key 改成 news_${id}_${date} 的形式。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题