API 接口如何判断类似 VIP 的使用期限是否已经到期?

假设 A 的 VIP 使用期限是30天,我应该怎么去判断 A 的账户 VIP 已经到期?

如果是用中间件来处理,那么每次请求都需要判断一次,但其实只需要在该用户到期的前一天或当天去判断他的有效期限已经到期,并且提醒 A

前端接口验证方式是 JWT 或者在每次 JWT 刷新的时候去判断 A 的使用期限吗?

总觉得这样设计不太合理,或者使用定时任务每天扫描一次 user 表,临近使用期限一天内的用户存储到 CACHE,前端请求的时候,判断该用户是否存在于 CACHE 表,如果存在,代表该用户为临期用户,再返回给前端去提醒用户?

但是总感觉这样做的方法不对,还有其他解决方案吗?
麻烦提供给我一个思路,感谢!:pray: :pray: :pray:

悲观者永远正确,乐观者永远前行。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

使用redis延迟队列(延迟队列是基于redis有序集合数据类型的,具体代码可以百度) 用户充值成vip将信息放入延迟队列中 用个定时任务消费队列即可。 如果使用豪秒级定时器消费,数据可以做到很精确的。 这样避免数据更新的时效性又可以避免时时查表 效率很高性能也很棒

3年前 评论
tism 2年前
讨论数量: 7

用一个脚本每日凌晨去判断vip是否到期,到期把用户置成普通用户, 然后就直接判断是否是vip会员就行

3年前 评论

使用redis延迟队列(延迟队列是基于redis有序集合数据类型的,具体代码可以百度) 用户充值成vip将信息放入延迟队列中 用个定时任务消费队列即可。 如果使用豪秒级定时器消费,数据可以做到很精确的。 这样避免数据更新的时效性又可以避免时时查表 效率很高性能也很棒

3年前 评论
tism 2年前

看你想被动还是主动

3年前 评论
自由与温暖是遥不可及的梦想

使用 redis 队列延迟来处理

当用户购买 vip 订单完成 记录时间 放入 redis 队列 设置vip有效时间 执行该脚本 然后设置用户身份即可

3年前 评论

@Latent @自由与温暖是遥不可及的梦想 感谢回复,Redis 延时队列思路理解了,还有个问题是,前端每次请求 API 接口的时候都需要通过中间件去判断一次 VIP 是否到期吗?谢谢

3年前 评论

@MArtian 还是去读redis集合(虽然叫延迟队列但它本质上还是一个有序集合) 里面的数据是否存在 存在则没被消费掉。即vip没有过期

3年前 评论
Tsukasa_Kanzaki 3年前
MArtian (楼主) 3年前

cache会员信息 后 对比 cache 不香吗?

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!