簡體   English   中英

如何在Laravel上獲取帶有標記的所有緩存條目

[英]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哈希:

http://redis.io/commands/hset

但是您無法在哈希鍵上設置單獨的到期日期,因此您必須手動刪除它們,或者使用帶有小時的主鍵,例如:failed.logins:08和expire whole。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM