sql >> Databasteknik >  >> NoSQL >> Redis

Hämta index för ett objekt efter värde i en redis-lista

Jag känner inte till nodejs klientdetaljer för detta, men följande är en implementering av ett mycket enkelt indexOf-kommando i lua.

I en min fil indexof.lua jag har följande kod:

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

Låt oss skicka några värden till en mylist .

> rpush mylist foo bar baz qux
(integer) 4

Vi kan använda lua-skriptet för att hitta indexet för vilket värde som helst i listan. Kommandot är O(N).

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

index för bar var 1

> lindex mylist 1
"bar"

index för nil är -1

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

Titta på http://redis.io/commands/eval ytterligare dokumentation om EVAL-kommandot.



  1. Lagra objektegenskaper i redis

  2. MongoDB Duplicera dokument även efter att ha lagt till unik nyckel

  3. Hur man skapar ett textindex i MongoDB

  4. Är det möjligt att casta i en MongoDB-Query?