No conozco los detalles del cliente de nodejs para esto, pero la siguiente es una implementación de un comando indexOf muy simple en lua.
En mi archivo indexof.lua
tengo el siguiente código:
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
Empujemos algunos valores a mylist
.
> rpush mylist foo bar baz qux
(integer) 4
Podemos usar el script lua para encontrar el índice de cualquier valor dentro de la lista. El comando es O(N).
$ redis-cli --eval indexof.lua mylist , bar
(integer) 1
índice de bar
era 1
> lindex mylist 1
"bar"
índice de nil
es -1
$ redis-cli --eval indexof.lua mylist , nil
(integer) -1
Consulte la http://redis.io/commands/eval documentación adicional sobre el comando EVAL.