如何获取所有不是以“enduser”开头的key
My List
"enduser_tom"
"master_1"
"enduser_jack"
"slave_1"
"slave_2"
"enduser_harry"
"enduser_panther"
Result should be :
"master_1"
"slave_1"
"slave_2"
这是我试过的
- keys * ->列出所有的keys
- keys *enduser -> 列出所有以
最终用户
- keys enduser* -> 列出所有以 enduser 开头的键
因此需要帮助才能获得上述结果。
据我所知,KEYS
命令无法执行此操作。
使用 Lua 脚本:
local keys, filtered = redis.call('KEYS', '*'), {};
for i=1,#keys do
if string.sub(keys[i], 1, string.len(ARGV[1])) ~= ARGV[1] then
filtered[#filtered + 1] = keys[i];
end
end
return filtered
SCRIPT LOAD
注册脚本,稍后您可以使用 EVALSHA
执行它:
127.0.0.1:6379> SCRIPT LOAD "local keys, filtered = redis.call('KEYS', '*'), {};\nfor i=1,#keys do\n if string.sub(keys[i], 1, string.len(ARGV[1])) ~= ARGV[1] then\n filtered[#filtered + 1] = keys[i];\n end\nend\nreturn filtered"
"fca86e91217c20c90b268539603bdb16c7fdbc32"
127.0.0.1:6379> EVALSHA fca86e91217c20c90b268539603bdb16c7fdbc32 0 enduser
您还可以将其保存到文件中并使用 redis-cli --eval
执行它:
redis-cli --eval not_startswith.lua , enduser