11/08/08 23:38:09.94 発信元:124.147.108.71 0
同一IPアドレスで忍者IDを取得して使い捨てるタイプにはこんな感じで対応可能
これだけでは作り置きには対応できない
my $r = Redis->new(server => '127.0.0.1:6379', encoding => undef);
$r->auth("foobared"); # redis DBのアクセスパス(デフォ)
$r->ping || die "no server?"; # redisサーバの生存確認
my $ipaddr = "192.0.2.10"; # 例
my $expire = 10*60; # 10分
# 忍者IDを発行したばかりなら待たせる
if ($r->exists($ipaddr)) {
my $ttl = $r->ttl($ipaddr);
print "あと$ttl秒待て\n";
}
else {
print "新規忍者ID発行処理\n";
# IPアドレスを記録。$expire秒で消える
$r->setex($ipaddr => $expire => time()); # IPアドレスがキー、値は不要だけど取りあえず現時刻
}
$r->quit;
---
expireをredisに任せられるのが楽ちんポイント