Jag känner inte till nodejs klientdetaljer för detta, men följande är en implementering av ett mycket enkelt indexOf-kommando i lua.
I en min fil indexof.lua
jag har följande kod:
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
Låt oss skicka några värden till en mylist
.
> rpush mylist foo bar baz qux
(integer) 4
Vi kan använda lua-skriptet för att hitta indexet för vilket värde som helst i listan. Kommandot är O(N).
$ redis-cli --eval indexof.lua mylist , bar
(integer) 1
index för bar
var 1
> lindex mylist 1
"bar"
index för nil
är -1
$ redis-cli --eval indexof.lua mylist , nil
(integer) -1
Titta på http://redis.io/commands/eval ytterligare dokumentation om EVAL-kommandot.