redis命令行中可以执行lua脚本来进行一些复杂的操作,可以直接在命令行中传入lua代码内容,也可以传入一个脚本路径。
数据量不大可以使用keys来进行查找匹配
简易版本:
eval "return redis.call('DEL', unpack(redis.call('KEYS', KEYS[1])))" 0 pattern
或者使用for循环
eval "local tasks = redis.call('KEYS', KEYS[1] .. '*'); for i=1,#tasks do redis.call('DEL', tasks[i]) end; return tasks" 1 pattern
使用scan来防止keys命令阻塞其他命令的执行
eval 'local result = {};local cursor="0"; repeat local r = redis.call("SCAN", cursor, "MATCH", KEYS[1], "COUNT", 100); local list = r[2]; for i=1,#list do result[#result+1] = list[i]; redis.call("del", list[i]) end; cursor = tostring(r[1]) until cursor == "0" return result;' 1 pattern
命令中的pattern是需要替换的匹配规则