Laravel - 擦除包含特定字符串的所有缓存/ redis密钥

Sta*_*wed 4 caching redis laravel

是否可以使用与特定字符串匹配的Laravel擦除redis中的所有键?例如,如果我想忘记带有产品一词的密钥,它会忘记以下密钥:

laravel:896235872385237588327582370375acaca235325:products-list laravel:896235872385237588327582370375acaca235325:products-categories

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

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

my-*_*ick 6

为什么不:

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;  
}
Run Code Online (Sandbox Code Playgroud)

对于生产环境SCAN游标[MATCH模式] [COUNT count]应该用来代替"keys"

http://redis.io/commands/scan

因为你不想在内存中耗尽数万个密钥,并且你不想使用"密钥"来阻止你的整个redis实例.