Tôi không biết chi tiết về ứng dụng nodejs cho việc này, nhưng sau đây là cách triển khai lệnh indexOf rất đơn giản trong lua.
Trong tệp của tôi indexof.lua
tôi có mã sau:
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
Cho phép đẩy một vài giá trị vào mylist
.
> rpush mylist foo bar baz qux
(integer) 4
Chúng ta có thể sử dụng tập lệnh lua để tìm chỉ mục của bất kỳ giá trị nào trong danh sách. Lệnh là O (N).
$ redis-cli --eval indexof.lua mylist , bar
(integer) 1
chỉ mục của bar
là 1
> lindex mylist 1
"bar"
chỉ mục của nil
là -1
$ redis-cli --eval indexof.lua mylist , nil
(integer) -1
Xem http://redis.io/commands/eval tài liệu bổ sung về lệnh EVAL.