sql >> Databáze >  >> NoSQL >> Redis

Získejte index položky podle hodnoty v seznamu redis

Neznám pro to podrobnosti klienta nodejs, ale následující je implementace velmi jednoduchého příkazu indexOf v lua.

V mém souboru indexof.lua mám následující kód:

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

Pojďme vložit několik hodnot do mylist .

> rpush mylist foo bar baz qux
(integer) 4

Můžeme použít skript lua k nalezení indexu libovolné hodnoty v seznamu. Příkaz je O(N).

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

index bar byl 1

> lindex mylist 1
"bar"

index nil je -1

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

Podívejte se na http://redis.io/commands/eval další dokumentaci k příkazu EVAL.



  1. Tisková zpráva:ScaleGrid oznamuje hostingovou službu pro Redis™ na AWS

  2. Nodejs, nečeká na dokončení dotazu Redis, než bude pokračovat v provádění

  3. ruby resque bez nakládacích kolejnic prostředí

  4. Spring Redis Error Handle