判断一个小时之内是否重复发送了10次短信(2)
可以先参考我上一篇博客:
<a href="http://huangkunlun520.blog.51cto.com/2562772/1705080">http://huangkunlun520.blog.51cto.com/2562772/1705080</a>
每次发短信,都写入redis:
redishelper.getinstance().savekeycache("limit_one_hour"+ip, "" + system.currenttimemillis(), "");
同时获取该ip对应的所有记录:
ipmap = redishelper.getinstance().getallkeycache("limit_one_hour"+ip);
然后删除掉超过一个小时的记录:
protected map<string, string> clearrecordsgreaterthanhour(map<string, string> ipmap) {
arraylist<long> t = new arraylist<long>();
for (string k : ipmap.keyset()) {
long i = new long(k);
if (system.currenttimemillis() - i.longvalue() > 60*60*1000) {
t.add(i);
}
}
for (long i : t){
ipmap.remove(i.tostring());
return ipmap;
}
然后再判断 ipmap是否超过10条
注意:此时ipmap 中的记录均是相比于现在一个小时之内的.
这种思路与上一篇博客的思路完全不同.