Ik ken de nodejs-clientdetails hiervoor niet, maar het volgende is een implementatie van een heel eenvoudig indexOf-commando in lua.
In een mijn bestand indexof.lua
ik heb de volgende code:
local key = KEYS[1]
local obj = ARGV[1]
local items = redis.call('lrange', key, 0, -1)
for i=1,#items do
if items[i] == obj then
return i - 1
end
end
return -1
Laten we een paar waarden naar een mylist
sturen .
> rpush mylist foo bar baz qux
(integer) 4
We kunnen het lua-script gebruiken om de index van elke waarde in de lijst te vinden. Het commando is O(N).
$ redis-cli --eval indexof.lua mylist , bar
(integer) 1
index van bar
was 1
> lindex mylist 1
"bar"
index van nil
is -1
$ redis-cli --eval indexof.lua mylist , nil
(integer) -1
Bekijk de http://redis.io/commands/eval verdere documentatie over het EVAL-commando.