Я читал эту статью, в которой упоминается, что сохранение 1 миллиона ключей в redis будет использовать 17 ГБ памяти. Однако при переключении на хэши, разбивающие их по 1 к каждому (например: HSET "mediabucket:1155" "1155315" "939"
), они могут хранить 1 М в 5 ГБ, что является довольно большой экономией.
Я читал redis memory-optimization, но я не совсем понимаю разницу. Он говорит, что HGET не совсем O (1), но достаточно близко и упоминает больше использования процессора при использовании hsets. Я не понимаю, почему будет больше использования процессора (конечно, время торговли для пространства. Но как/что?). Он упоминает "кодирование", но не то, как они кодируют его.
В нем также упоминается только строка, но я понятия не имею, что означает только строка. Это хэш-поле? Означает ли это хэш-поле? Я ничего не вижу в HSET. Что именно было бы закодировано и почему кодирование было бы более эффективным, чем использование SET?
Как возможно HSET "mediabucket:1155" "1155315" "939"
эффективнее, чем SET "mediabucket:1155315" "939"
? Там меньше данных в SET (1155315 и d 1155 используется вместо 1155315). Я лично попытаюсь использовать двоичные ключи, однако я не думаю, что это связано с тем, почему HSETs более эффективны.
ИЗМЕНИТЬ:
Перекресток помещен в список рассылки redis-db: https://groups.google.com/d/topic/redis-db/90K3UqciAx0/discussion