2014-09-18 62 views

回答

0

Redis文檔沒有描述這樣的優化。

時間複雜度:您鏈接到的ZRANGEBYSCORE狀態(加重語氣)頁面 有序集合O(日誌(N)+ M),N爲元素的數量和M的數元素正在返回。 如果M是 常數(例如總是詢問具有LIMIT的前10個元素),則可以將其認爲是O(log(N))

鑑於此,看起來時間複雜性不會是O(1),除非您的排序集只包含一個元素。相反,時間複雜度將取決於排序集中元素的數量,並且仍然是O(log(N))。

+0

「ZRANGEBYSCORE」實現的完整代碼可以在這裏找到(https://github.com/antirez/redis/blob/209f266cc534471daa03501b2802f08e4fca4fe6/src/t_zset.c#L2202)。 – 2014-09-18 18:41:19

2

如果您試圖獲得最高得分以至於ZRANGE的複雜性成爲問題,請緩存獨立於排序集合的最高分數,然後您可以通過O(1)得到它。

+0

這是一個不錯的簡單解決方案。 – 2014-09-18 20:08:35