在redis中,我们可以使用通配符,
KEYS foo*
- >找到钥匙。
现在我想使用通配符删除hashmap的特定字段。考虑如下。 创建hashmap
HMSET myhash f "g" field1 "Hello" field2 "World"
现在我想使用像
这样的通配符删除密钥 DEL myha*
有可能吗?
此外,我想使用通配符(如
)从SET中删除特定字段DEL myhash field*
这也可能吗?
提前完成。
答案 0 :(得分:1)
要使用通配符从SET中删除特定字段,您可以使用此LUA脚本:
-- ARGV[1] - hash key
-- ARGV[1] - lua pattern
local fields = redis.call("HKEYS", ARGV[1]);
local retVal = {};
for key, value in pairs(fields) do
if (string.match(value, ARGV[2])) then
table.insert(retVal, value);
redis.call("HDEL", ARGV[1], value);
end
end
return retVal;
此脚本的复杂性为 O(n)。脚本返回与给定模式匹配的已删除字段。查看string.match tutorial到lua模式匹配功能。
使用PHP
的{{1}}中的示例用法:
phpredis