|
| |||
|
|
- вместо мемкеша на каждый тип объекта можно в качестве ключа использовать не ID объекта а строку вида "OBJECT_TYPE-OBJECT_ID", т.е. например запись 23 таблицы user хранить не в memcached для user под ключём 23 а в memcached для всего с ключём "user-23" Угу. Но я пока не очень понимаю, чем это поможет - при инвалидации придется весь кэш полностью перебрать. - зачем использовать mysql с таблицами в памяти, если можно хранить иерархию в том же memcached, настроив отдельную instance с гарантированным невытеснением. key-value с быстрым доступом как нельзя лучше подойдёт для хранения иерархии. Да, была такая идея. Проблема в том, что я так и не придумал, как у меня это будет работать при параллельном доступе к одной и той же иерархии из многих процессов. Скажем, два воркера решили у меня закинуть по объекту в кэш для одного и того же модуля. Соответственно, они оба должны проапдейтить иерархию в кэше, и может настать момент, когда они друг за другом ее возьмут и друг за другом ее обратно положат. Изменения первого положившего будут потеряны, а это в моем случае плохо, т.к. при инвалидации не все объекты для модуля выбросятся. p.s. кстати, в mysql есть 2 способа заставить его держать таблицы в памяти - движок HEAP и "хакерский" вариант - диск в оперативе и симлинк DATA папки мускула или отдельной таблицы туда. Использовал такой вариант когда нужна была большая таблица в памяти с полями, не поддерживаемыми HEAP движком. Отличная тема, спасибо, при случае попробую применить. А то я уже понял, что хранилище в памяти только для индексации memcached и годится, ничего тяжелого туда не положить. Добавить комментарий: |
||||