簡體   English   中英

如何從帶分數列表的redis zset獲取數據?

[英]how to get data from redis zset with score list?

我想從zset獲取帶有分數列表的數據,例如

zadd zset 1 a 2 b 3 c 4 d

我想要一個命令

'zrange zset [2, 4]'

結果是

b, d

謝謝!

僅此一個ZRANGEBYSCORE命令。

您可以使用一段代碼來執行此操作,例如:

for score in score_list
    members = zrangebyscore(zset, score, score)
    member_list += members 

ZRANGEBYSCORE的時間成本為O(LOG(N)+ M),M為返回的成員數。 因此我們可以說zrangebyscore中的成本為O(LOG(N)),N為zset的大小。 因此,總時間成本為O(M * LOG(N)),其中M是score_list的長度。 這將是最好的時間成本。

唯一的壞事是我們在網絡傳輸中花費了M個RTT。 我們可以使用管道來加快查詢速度。

Redis文件說:

可以實現請求/響應服務器,以便即使客戶端尚未讀取舊響應,它也可以處理新請求。 這樣,可以將多個命令發送到服務器,而根本不用等待答復,最后一步即可讀取答復。

因此,如果您使用管道技術,則只需花費一個RTT時間。 而且我認為每種語言的redis客戶都已實現了管道。 祝好運 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM