定时任务使用场景和资源消耗问题

新手上路,请多包涵

场景:权限系统需要给人分配权限,必须要设定过期时间。时间长度最低是月级别。

方案一:定时任务,以小时为单位扫描。
方案二:查询数据库,每次做判断。

建议方案二,最小使用原则,避免不必要的资源浪费,而且及时性高。

大家觉得呢?

阅读 4.1k
4 个回答

缓存redis过期自动删除

新手上路,请多包涵

两个方案都不太建议。
个人建议:

1. 第一次登录,验证通过后,登录信息放在缓存中
2. 后期登录查询缓存即可验证登录身份
3. 时间的判断过期与否应该是缓存中来解决
4. 尽量少和数据库交互,当然这不是绝对的

方案2没问题,但是说到底这两方案本身也没什么冲突,你用定时任务无非是修改某个有效标识,每次登录还是要查出来判断这个标识的,而方案2可以节省一点,分配权限的时候直接设置个过期时间,每次登录还是要查出来判断的,你用mysql也好,用redis也好,查询判断的逻辑怎么都要有,所以定时任务的确是不必要的,至于楼上两个都说要用缓存的,其实没必要,一来你这个时间大概率跟其他用户信息放在一起的,不查他也要查别的,顺手一起查了就得了,而利用redis的过期,redis删除过期数据的策略本身就是主动(定时任务)+被动(查询时判断)来做的,跟你这俩方案要做的是一样的事

没啥数据,1,2 都可以,

2 实现更简单点

一般也没性能问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题