天天看点

判断一个小时之内是否重复发送了10次短信(2)

判断一个小时之内是否重复发送了10次短信(2)

可以先参考我上一篇博客:

<a href="http://huangkunlun520.blog.51cto.com/2562772/1705080">http://huangkunlun520.blog.51cto.com/2562772/1705080</a>

每次发短信,都写入redis:

判断一个小时之内是否重复发送了10次短信(2)

redishelper.getinstance().savekeycache("limit_one_hour"+ip, "" + system.currenttimemillis(), "");  

同时获取该ip对应的所有记录:

判断一个小时之内是否重复发送了10次短信(2)

ipmap = redishelper.getinstance().getallkeycache("limit_one_hour"+ip);  

 然后删除掉超过一个小时的记录:

判断一个小时之内是否重复发送了10次短信(2)

protected map&lt;string, string&gt; clearrecordsgreaterthanhour(map&lt;string, string&gt; ipmap) {  

        arraylist&lt;long&gt; t = new arraylist&lt;long&gt;();  

        for (string k : ipmap.keyset()) {  

            long i = new long(k);  

            if (system.currenttimemillis() - i.longvalue() &gt; 60*60*1000) {  

                t.add(i);  

            }  

        }  

        for (long i : t){  

            ipmap.remove(i.tostring());  

        return ipmap;  

    }  

 然后再判断 ipmap是否超过10条

注意:此时ipmap 中的记录均是相比于现在一个小时之内的.

这种思路与上一篇博客的思路完全不同.