sql >> Database teknologi >  >> NoSQL >> Redis

Hent indekset for et element efter værdi i en redis-liste

Jeg kender ikke nodejs klientdetaljer for dette, men det følgende er en implementering af en meget simpel indexOf-kommando i lua.

I en min fil indexof.lua jeg har følgende kode:

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

Lad os skubbe nogle få værdier til en mylist .

> rpush mylist foo bar baz qux
(integer) 4

Vi kan bruge lua-scriptet til at finde indekset for enhver værdi på listen. Kommandoen er O(N).

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

indeks for bar var 1

> lindex mylist 1
"bar"

indeks på nil er -1

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

Se http://redis.io/commands/eval yderligere dokumentation om EVAL-kommandoen.



  1. Hvordan udfører man en værdibaseret Order By i MongoDB?

  2. Hvordan forbindes med mongodb ved hjælp af sailsjs v0.10?

  3. forespørgsel i mongo Shell giver SyntaxError:missing :after property

  4. MongoDB $mergeObjects