Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Uzyskaj indeks elementu według wartości na liście redis

Nie znam szczegółów klienta nodejs, ale poniżej jest implementacja bardzo prostego polecenia indexOf w lua.

W moim pliku indexof.lua mam następujący 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

Przekażmy kilka wartości do mylist .

> rpush mylist foo bar baz qux
(integer) 4

Możemy użyć skryptu lua, aby znaleźć indeks dowolnej wartości na liście. Polecenie to O(N).

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

indeks bar był 1

> lindex mylist 1
"bar"

indeks nil wynosi -1

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

Zapoznaj się z http://redis.io/commands/eval dalszą dokumentacją dotyczącą polecenia EVAL.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis zapisuje ciągi jako bufory w niektórych systemach operacyjnych, a nie w innych?

  2. Redis — rozważ zmianę nazwy jednego z ziaren lub włączenie nadpisywania, ustawiając spring.main.allow-bean-definition-overriding=true

  3. Używanie selera do synchronicznych zapytań w zewnętrznym interfejsie API w czasie rzeczywistym za pomocą Gevent

  4. kanały bez warstwy kanałowej lub innego darmowego hostingu

  5. Redis:Jak przeciąć normalny zestaw z posortowanym zestawem?