加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 19:37:03 所属栏目:大数据 来源:网络整理
导读:我正在使用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)) $
我正在使用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并且全部到期.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读