如何获取不是从“enduser”开始的所有密钥
我的清单
"enduser_tom"
"master_1"
"enduser_jack"
"slave_1"
"slave_2"
"enduser_harry"
"enduser_panther"
结果应该是:
"master_1"
"slave_1"
"slave_2"
这是我试过的
因此需要帮助才能获得上述结果。
答案 0 :(得分:1)
AFAIK 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