1 个回答
使用redis的zset实现即可,示例步骤如下:
private static Boolean canSendSms(String phone,Jedis jedis) {
//现在的时间
long now = System.currentTimeMillis();
// 设置key以用的id或者phone为例
String key = "phone:" + phone + ":sms";
//把超过1分钟的所有数据给删除屌
jedis.zremrangeByScore(key, 0, now - 60000);
//统计剩余的数据(即1分钟内的数据)
long zcount = jedis.zcount(key, now - 60000, now);
//小于3次可以直接发
if(zcount < 3){
//把当前时间戳添加进去
jedis.zadd(key, now, String.valueOf(now));
//允许发短信
return true;
}elese
{
//不允许发短信
return false;
}
}
发布于:3个月前 (01-20) IP属地:四川省
我来回答
您需要 登录 后回答此问题!