Подтвердить что ты не робот

Redis получает все значение списка без итерации и без выскакивания

У меня есть простой redis list key = > "поставщик_id"

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

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

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

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

4b9b3361

Ответ 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

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

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