E.g。
keys X 'or' Y
应该打印
1)X<br>
2)Y
答案 0 :(得分:0)
Redis仅将OR作为位操作。
例如:
redis> SET key1 "foobar"
OK
redis> SET key2 "abcdef"
OK
redis> BITOP AND dest key1 key2
(integer) 6
redis> GET dest
"`bc`ab"
上了解详情
答案 1 :(得分:0)
不,您不能直接使用KEYS
或SCAN
,因为他们提供的模式匹配不支持。
但是,您可以使用Lua脚本来执行此操作:
local dict = {}
while (#ARGV > 0) do
local pattern = table.remove(ARGV,1)
local cursor = 0
repeat
local r = redis.call('SCAN',cursor,'MATCH',pattern)
cursor = tonumber(r[1])
while (#r[2] > 0) do
dict[table.remove(r[2],1)] = true
end
until cursor == 0
end
local reply = {}
for k,v in pairs(dict) do
reply[#reply+1] = k
dict[k] = nil
end
return reply
示例输出:
$ redis-cli KEYS "*"
1) "bazfoo"
2) "bar2"
3) "foo1"
4) "qazbar"
$ redis-cli --eval scanor.lua , "foo*" "bar*"
1) "bar2"
2) "foo1"