Redisによる指定時間内の操作回数の制限
613 ワード
1時間に5回以内のアクセス制限
redisのlistデータ型により,アクセス毎にlpushコマンドで現在のユーザidをキーとし,現在のシステム時間を値としてredisに格納する.
アクセスごとに判断し、llenコマンドで格納データ数が5より大きいか否かを判断し、lindexコマンドで最後から5番目のデータ、すなわちアクセス時間を取り出す.
現在の時間と5回目のアクセス時間の差が1時間より大きいかどうかを比較し、それより大きい場合はアクセスを禁止し、そうでない場合はアクセスを許可します.
if(jedisCluster.llen("userid")>=5 && System.currentTimeMillis() -
Long.parseLong(jedisCluster.lindex("userid",4))<=3600*1000){
//
}else{
jedisCluster.lpush("userid",System.currentTimeMillis()+"");
//
}
redisのlistデータ型により,アクセス毎にlpushコマンドで現在のユーザidをキーとし,現在のシステム時間を値としてredisに格納する.
アクセスごとに判断し、llenコマンドで格納データ数が5より大きいか否かを判断し、lindexコマンドで最後から5番目のデータ、すなわちアクセス時間を取り出す.
現在の時間と5回目のアクセス時間の差が1時間より大きいかどうかを比較し、それより大きい場合はアクセスを禁止し、そうでない場合はアクセスを許可します.