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 ответов:
чтобы получить все элементы списка с помощью 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Это также дает вам очень быстрый доступ (по идентификатору поставщика), если вы просто хотите прочитать из него.
надеюсь, что это поможет!
Comments