sql >> Database >  >> NoSQL >> Redis

Verkrijg de index van een item op waarde in een redis-lijst

Ik ken de nodejs-clientdetails hiervoor niet, maar het volgende is een implementatie van een heel eenvoudig indexOf-commando in lua.

In een mijn bestand indexof.lua ik heb de volgende code:

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

Laten we een paar waarden naar een mylist sturen .

> rpush mylist foo bar baz qux
(integer) 4

We kunnen het lua-script gebruiken om de index van elke waarde in de lijst te vinden. Het commando is O(N).

$ redis-cli --eval indexof.lua mylist , bar
(integer) 1

index van bar was 1

> lindex mylist 1
"bar"

index van nil is -1

$ redis-cli --eval indexof.lua mylist , nil
(integer) -1

Bekijk de http://redis.io/commands/eval verdere documentatie over het EVAL-commando.



  1. Stappen om MongoDB op Amazon Linux te installeren

  2. MongoDB hernoemen databaseveld binnen array

  3. Koppelen en maken van MongoDB-joins met SQL:deel 3

  4. Duplicaten verwijderen uit MongoDB