Всем привет.
Столкнулся с такой проблемой: допустим, есть дерево в shared memory, где ключ - ip адрес, а значение - структура, которая хранит определенную информацию связанную с этим ip.
С ip необходимо также связать информацию о том, на какие uri он ходил, какие рефереры присылал, какие ua, и прочие строки. Получается, примерно так: ip_tree->ip_node ---> per_ip_tree->node. Создать это не проблема, но при удалении ip_node, скажем по тайм-ауту, необходимо пройтись по всему дереву и сделать free для указателей всех нод, т.к. ноды в per_ip_tree выделялись по мере необходимости.
Тут же возникает мысль: выделить сразу большой блок и на нем сделать ngx_slab_init(). А когда нам потребуется удалить per_ip_tree - будет достаточно всего лишь сделать один free для всего этого блока, т.к. все ноды этого per_ip_tree были выделены исключительно из него.
Вопрос: адекватен ли такой подход в данной ситуации? Если нет, какие можете подсказать варианты?
Заранее всех благодарю.