国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

怎么模糊刪除redis的key呢

德瑪西亞

問題描述

  • @method static bool|array scan($it)
    看了一下這個(gè)不支持模式匹配(match)和計(jì)數(shù)(count)功能,那我大量模糊刪除key怎么做呢?
273 1 0
1個(gè)回答

orangeFan

如果不涉及到集群的話 可以使用lua腳本實(shí)現(xiàn)
數(shù)據(jù)量不多情況可以直接使用keys

 EVAL "local keys = redis.call('KEYS', ARGV[1]) for i=1, #keys do    redis.call('DEL', keys[i]) end return #keys" 0 keys*

        $luaScript = <<<LUA
        local keys = redis.call('KEYS', ARGV[1])
        for i=1, #keys do
            redis.call('DEL', keys[i])
        end
        return #keys
        LUA;

        // 執(zhí)行 Lua 腳本
        $pattern = 'keys*'; // 匹配的鍵模式
        $result = Redis::eval($luaScript, 0, $pattern);

數(shù)據(jù)量多的情況 可以使用scan代替

local cursor = '0'
local count = 0
repeat
    local result = redis.call('SCAN', cursor, 'MATCH', ARGV[1], 'COUNT', 100)
    cursor = result[1]
    local keys = result[2]
    for i=1, #keys do
        redis.call('DEL', keys[i])
        count = count + 1
    end
until cursor == '0'
return count
// Lua 腳本
        $luaScript = <<<LUA
        local cursor = '0'
        local count = 0
        repeat
            local result = redis.call('SCAN', cursor, 'MATCH', ARGV[1], 'COUNT', 100)
            cursor = result[1]
            local keys = result[2]
            for i=1, #keys do
                redis.call('DEL', keys[i])
                count = count + 1
            end
        until cursor == '0'
        return count
        LUA;

        // 執(zhí)行 Lua 腳本
        $pattern = 'keys*'; // 匹配的鍵
        $result = Redis::eval($luaScript, [$pattern], 0);
??