Redis
 sql >> база данни >  >> NoSQL >> Redis

Вземете индекса на елемент по стойност в списък за редис

Не знам подробностите за клиента на nodejs за това, но по-долу е реализация на много проста команда indexOf в lua.

В моя файл indexof.lua имам следния код:

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

Нека да изпратим няколко стойности към mylist .

> rpush mylist foo bar baz qux
(integer) 4

Можем да използваме lua скрипта, за да намерим индекса на всяка стойност в списъка. Командата е O(N).

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

индекс на bar беше 1

> lindex mylist 1
"bar"

индекс на nil е -1

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

Вижте http://redis.io/commands/eval допълнителна документация за командата EVAL.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да изтрия всичко в Redis?

  2. Mongodb пресичане с времеви диапазон

  3. Как работи SignalR.Redis под капака?

  4. Джедаи - Кога да използваме returnBrokenResource()

  5. Осигуряване на възел Redis