data structures - Why the time complexity of insertion in a redis SET is O(n)? - Stack Overflow



data structures - Why the time complexity of insertion in a redis SET is O(n)? - Stack Overflow

Complexity is not O(n) but O(N) for N members added. Concretely, it means that you can consider that each insertion operation is done in constant time - O(1) - which is only asymptotically true.

Hereunder, we suppose that n is the number of items in the set.

To perform a SADD operation Redis has to first lookup the object representing the set (hash lookup - complexity O(1)), and then try to add the item in the object itself.

The set can be represented in memory as an intset or a hash table.

If the object is a intset (i.e. a sorted vector of integers), it will perform a binary search to search for the position of the item - O(log n) and then eventually, insert the item - O(n) - however this is only for small values of n. The set-max-intset-entries must be chosen so that the whole object fits in the CPU caches for optimal performance.

If the object is a hash table, then Redis will have to perform a lookup and add the item if needed - complexity is O(1).

Because a SADD command can add N items, the resulting asymptotic complexity is O(N).


Read full article from data structures - Why the time complexity of insertion in a redis SET is O(n)? - Stack Overflow


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts