Redis для выборки всех значений из списка без итерации и не появляются


У меня есть простой ключ redis list = > "supplier_id"

теперь все, что я хочу, это получить все значение списка без фактического перебора или выскакивания значения из списка

пример для извлечения всех значений из списка теперь у меня есть итерация по длине redis

element = []
0.upto(redis.llen("supplier_id")-1) do |index| 
  element << redis.lindex("supplier_id",index)
 end

можно ли это сделать без итерации возможно, с лучшим моделированием redis . может кто-нибудь предложить

2   51   2012-05-22 17:27:05

2 ответа:

чтобы получить все элементы списка с помощью Redis, вам не нужно повторять и извлекать каждый отдельный элемент. Это было бы действительно неэффективно.

вы просто должны использовать LRANGE команда для извлечения всех элементов в одном кадре.

elements = redis.lrange( "supplier_id", 0, -1 )

вернет все элементы списка без изменения самого списка.

Я немного неясно на ваш вопрос, но если supplier_id является числовым, то почему бы не использовать ZSET?

добавьте свои значения следующим образом:

ZADD suppliers 1 "data for supplier 1"  
ZADD suppliers 2 "data for supplier 2"  
ZADD suppliers 3 "data for supplier 3"  

затем вы можете удалить все до (но не включая поставщика три), например:

ZREMRANGEBYSCORE suppliers -inf 2

или

ZREMRANGEBYSCORE suppliers -inf (3

Это также дает вам очень быстрый доступ (по идентификатору поставщика), если вы просто хотите прочитать из него.

надеюсь, что это поможет!