これに関するnodejsクライアントの詳細はわかりませんが、以下はluaでの非常に単純なindexOfコマンドの実装です。
私のファイルindexof.lua
私は次のコードを持っています:
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
いくつかの値をmylist
にプッシュしましょう 。
> rpush mylist foo bar baz qux
(integer) 4
luaスクリプトを使用して、リスト内の任意の値のインデックスを見つけることができます。コマンドはO(N)です。
$ redis-cli --eval indexof.lua mylist , bar
(integer) 1
bar
のインデックス 1でした
> lindex mylist 1
"bar"
nil
のインデックス -1
$ redis-cli --eval indexof.lua mylist , nil
(integer) -1
EVALコマンドに関するhttp://redis.io/commands/evalの詳細なドキュメントを参照してください。