Eu não conheço os detalhes do cliente nodejs para isso, mas o seguinte é uma implementação de um comando indexOf muito simples em lua.
Em meu arquivo
indexof.lua
eu tenho o seguinte 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
Vamos enviar alguns valores para uma
mylist
. > rpush mylist foo bar baz qux
(integer) 4
Podemos usar o script lua para encontrar o índice de qualquer valor dentro da lista. O comando é O(N).
$ redis-cli --eval indexof.lua mylist , bar
(integer) 1
índice de
bar
era 1 > lindex mylist 1
"bar"
índice de
nil
é -1 $ redis-cli --eval indexof.lua mylist , nil
(integer) -1
Consulte a http://redis.io/commands/eval documentação adicional sobre o comando EVAL.