[英]How to get all cache entries with a tag on Laravel
我正在使用Laravel構建登錄限制系統,我用它來保存緩存數據庫上的每個失敗登錄。 (我使用Redis)。
編碼:
class FailedLogins
{
const NUM_FAILURES_TO_LOCK = 30,
TIME_RANGE = 10; // In minutes
public function add($email, $ip = null)
{
if (is_null($ip))
$ip = request()->ip();
$index = md5($email . $ip);
Cache::tags('failed.logins')->put($index, 1, self::TIME_RANGE);
}
public function hasTooMany()
{
$numFailedLogins = count(Cache::tags('failed.logins')->get());
return ($numFailedLogins >= self::NUM_FAILURES_TO_LOCK);
}
}
問題出在hasTooMany
方法上,我必須在get
方法上提供一個關鍵參數。 我試圖在這一行上做什么: Cache::tags('failed.logins')->get()
是獲取帶有failed.logins
標記的所有條目,所以我可以計算有多少條目。
好吧,那不行,因為我做不到。 那你建議我用什么來解決呢? 如果它只是一個Redis解決方案也沒關系。
你可以使用redis哈希:
但是您無法在哈希鍵上設置單獨的到期日期,因此您必須手動刪除它們,或者使用帶有小時的主鍵,例如:failed.logins:08和expire whole。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.