Saya tidak tahu detail klien nodejs untuk ini, tetapi berikut ini adalah implementasi dari perintah indexOf yang sangat sederhana di lua.
Dalam file saya indexof.lua
saya memiliki kode berikut:
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
Mari dorong beberapa nilai ke mylist
.
> rpush mylist foo bar baz qux
(integer) 4
Kita dapat menggunakan skrip lua untuk menemukan indeks dari nilai apapun di dalam daftar. Perintahnya adalah O(N).
$ redis-cli --eval indexof.lua mylist , bar
(integer) 1
indeks bar
adalah 1
> lindex mylist 1
"bar"
indeks nil
adalah -1
$ redis-cli --eval indexof.lua mylist , nil
(integer) -1
Lihat http://redis.io/commands/eval dokumentasi lebih lanjut tentang perintah EVAL.