Redis получает все значение списка без итерации и без выскакивания
У меня есть простой redis list key = > "поставщик_id"
Теперь я хочу, чтобы он извлекал все значения списка без фактического повторения или появления значения из списка
Пример для получения всего значения из списка Теперь у меня есть итерация по длине redis
element = []
0.upto(redis.llen("supplier_id")-1) do |index|
element << redis.lindex("supplier_id",index)
end
можно ли это сделать без итерации с лучшим улучшенным моделированием. кто-нибудь может предложить
Ответы
Ответ 1
Чтобы получить все элементы списка с помощью Redis, вам не нужно выполнять итерацию и выборку отдельных элементов. Это было бы действительно неэффективно.
Вам просто нужно использовать команду LRANGE для извлечения всех элементов за один снимок.
elements = redis.lrange( "supplier_id", 0, -1 )
вернет все элементы списка без изменения самого списка.
Ответ 2
Я немного неясен в вашем вопросе, но если поставщик_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
Это также дает вам очень быстрый доступ (по идентификатору поставщика), если вы просто хотите его прочитать.
Надеюсь, что это поможет!