我有一个脚本
local fields = redis.call('hkeys', 'a:hash:full:of:stuff');
local retval = {};
for i, field in pairs(fields) do
if((string.match(tostring(field),'ev')) ~= nil) then
retval[i] = {field, (string.match(tostring(field),'ev') ~= nil) }
end
end
return retval
此脚本返回一个空列表
当我将if
语句更改为
if((string.match(tostring(field),'.')) ~= nil) then
...
我得到一个长长的清单,其中包括以下内容
...
...
60) 1) "applet:1:metric:viewelement:20130607"
2) (nil)
61) 1) "applet:1:total_events:20130529"
2) (integer) 1
...
...
如果我将 if 语句替换为
if(1)
我得到同样长的钥匙列表
我也试过使用string.find
,它有类似的行为。
唯一看起来是一种模式的是,if
如果匹配的字符串在字符串中出现多次,或者如果它出现在开头,则该语句将通过。我不能很确定,但它可能会有所帮助。
我正在使用以下命令运行此脚本
$ redis-cli eval "$(cat get_keys.lua)" 0