복붙노트

[REDIS] 레디 스는 반복없이 터지는없이 목록의 모든 값을 가져 오기

REDIS

레디 스는 반복없이 터지는없이 목록의 모든 값을 가져 오기

나는 간단한 레디 스 목록 키가 => "supplier_id"

이제 모든 나는 실제로 이상 반복하거나 목록에서 값을 보여주고없이 목록의 모든 값을 검색하려면

예 지금은 반복 처리가 넘는 길이 레디 스 모두에게 목록에서 값을 검색하기

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

이 더 레디 스를 모델링과 반복 perhap없이 수행 할 수 있습니다. 캔 누군가 제안

해결법

  1. ==============================

    1.레디 스와 목록의 모든 항목을 검색하려면 반복하는 것을 필요로하고 각 개별 항목을 가져 오지 않습니다. 정말 비효율적이다.

    레디 스와 목록의 모든 항목을 검색하려면 반복하는 것을 필요로하고 각 개별 항목을 가져 오지 않습니다. 정말 비효율적이다.

    당신은 한 번에 모든 항목을 검색 할 LRANGE 명령을 사용해야합니다.

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

    목록 자체를 변경하지 않고 목록의 모든 항목을 반환합니다.

  2. ==============================

    2.나는 귀하의 질문에 조금 불분명 해요하지만 supplier_id 숫자 인 경우, 이유가 아닌 ZSET를 사용합니까?

    나는 귀하의 질문에 조금 불분명 해요하지만 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
    

    그것은 또한 당신에게 당신이 단지에서 읽으려면 (공급 업체 ID를 기준으로) 매우 빠른 액세스를 제공합니다.

    희망이 도움이!

  3. from https://stackoverflow.com/questions/10703019/redis-fetch-all-value-of-list-without-iteration-and-without-popping by cc-by-sa and MIT license