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 https://redis.io/commands/eval documentación adicional sobre el comando EVAL.