php – 如何在Laravel上获取带有标记的所有缓存条目

前端之家收集整理的这篇文章主要介绍了php – 如何在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并且全部到期.

猜你在找的Laravel相关文章