Je ne connais pas les détails du client nodejs pour cela, mais ce qui suit est une implémentation d'une commande indexOf très simple dans lua.
Dans un fichier mon indexof.lua
j'ai le code suivant :
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
Poussons quelques valeurs dans une mylist
.
> rpush mylist foo bar baz qux
(integer) 4
Nous pouvons utiliser le script lua pour trouver l'index de n'importe quelle valeur dans la liste. La commande est O(N).
$ redis-cli --eval indexof.lua mylist , bar
(integer) 1
index de bar
était 1
> lindex mylist 1
"bar"
indice de nil
vaut -1
$ redis-cli --eval indexof.lua mylist , nil
(integer) -1
Consultez la http://redis.io/commands/eval documentation complémentaire sur la commande EVAL.