当前位置: 首页 > 面试题库 >

Laravel-删除所有包含特定字符串的缓存/ Redis键

何涵畅
2023-03-14
问题内容

是否可以使用Laravel擦除Redis中与特定字符串匹配的所有键?例如,如果我想忘记包含单词product的键,它将忘记以下键:

laravel:896235872385237588327582370375acaca235325:产品列表laravel:896235872385237588327582370375acaca235325:产品类别

我会在redis服务器上运行它,但是我想知道是否可以通过Laravel直接运行更好的东西:

redis-cli keys "*" | grep "products" | xargs redis-cli DEL


问题答案:

为什么不:

public function forget($key_name)
{
    $redis = Cache::getRedis();
    $keys = $redis->keys("*$key_name*");
    $count = 0;
    foreach ($keys as $key) {
        $redis->del($key);
        $count++;
    }      
    return $count;  
}

对于生产环境,应使用SCAN光标[MATCH模式] [COUNT计数]代替“键”

http://redis.io/commands/scan

因为您不想在Redis中有成千上万个键的情况下耗尽内存,也不想通过使用“键”来阻止整个Redis实例。



 类似资料:
  • 问题内容: 所以我有以下格式的日志消息: 现在,我想删除所有不包含特定字符串“ xyz”的日志,并保留其余所有日志。我也想索引时间戳。 grokdebug没有太大帮助。 这是我的尝试: 我是新手,所以上面的模式可能没有意义。请帮忙。 问题答案: 要删除不包含字符串的消息: 您的骗子模式没有抓住日志的日期部分。 一旦在grok模式中有一个包含日期的字段,就可以在该字段上调用日期过滤器。 因此,您的g

  • 问题内容: 我需要从字符串中删除所有字符,然后再在字符串中出现此字符: 不知道我该怎么做。 问题答案: 您可以使用strstr做到这一点。

  • 如何消除罗恩说了一句我不想说的话?我有这个数据框: 我正试图删除带有“esponja”字样的rown 我想要这样的数据帧: 我是新手,我不知道如何解决这个问题

  • 问题内容: 我有一个div,其中可能有来自多个组的任何数量的类。每个组都有一个特定的前缀。在javascript中,我不知道该群组中的哪个类位于div上。我希望能够清除具有给定前缀的所有类,然后添加一个新的类。如果要删除所有以“ bg”开头的类,该怎么做?像这样的东西,但实际上有效: 问题答案: 使用jQuery,实际的DOM元素的索引为零,这应该可以工作

  • 我有一个具有以下列名的熊猫数据框: 结果1、测试1、结果2、测试2、结果3、测试3等。。。 我想删除名称中包含单词“Test”的所有列。此类列的数量不是静态的,而是取决于以前的函数。 我该怎么做?

  • 问题内容: 我面临网址问题,我希望能够转换标题,该标题可以包含任何内容,并去除所有特殊字符,因此它们仅包含字母和数字,当然我想用连字符替换空格。 怎么做?我听说过很多关于正则表达式(regex)的使用… 问题答案: 这应该可以满足您的需求: 用法: 将输出: 编辑: 嘿,只是一个简单的问题,如何防止多个连字符彼此相邻?并将它们替换为1?