[#] Под капотом Redis: Хеш таблица (часть 2) и Список
habrabot(difrex,1) — All
2015-12-07 13:30:03


В [первой части][1] я сказал, что хеш таблица это немного _LIST_, _SET_ и _SORTED SET_. Судите сами — _LIST_ состоит из ziplist/linkedlist, _SET_ состоит из dict/intset, а _SORTED SET_ это ziplist/skiplist. Мы уже рассмотрели словарь (dict), а во второй части статьи будем рассматривать структуру ziplist — вторую наиболее часто применимую структуру под капотом Redis. Посмотрим на _LIST_ — вторая часть его «кухни» это простая реализация связного списка. Это пригодится нам, чтобы внимательно рассмотреть часто упоминаемый совет об оптимизацию хеш таблиц через их замену на списки. Посчитаем сколько памяти требуется на накладные расходы при использовании этих структур, какую цену вы платите за экономию памяти. Подведём итоги при работе с хеш таблицами, при использовании кодировки в ziplist. В прошлый раз мы закончили на том, что сохранённые с использованием ziplist 1,000,000 ключей заняли **16 мб** оперативной памяти, тогда как в dict эти же данные потребовали **104 мб **(в 6 раз меньше!). Давайте разбираться какой ценой:



[Читать дальше →][2]

[1]: http://habrahabr.ru/post/271205/
[2]: http://habrahabr.ru/post/272089/#habracut