2016-06-12 2 views
1

Я пытаюсь хранить коллекции объектов в кеше.Подход или стратегия хранения коллекций объектов в кеше

{ 
    "name": "Dep1", 
    "employees": [{ 
     "id": 1, 
     "name": "emp1", 
     "profilePic": "http://test.com/img1.png" 
    }, { 
     "id": 2, 
     "name": "emp2", 
     "profilePic": "http://test.com/img2.png" 
    }, { 
     "id": 3, 
     "name": "emp3", 
     "profilePic": "http://test.com/img3.png" 
    }, { 
     "id": 4, 
     "name": "emp4", 
     "profilePic": "http://test.com/img4.png" 
    }] 
} 

В этом случае, если работник 1 изменяет свою фотографию, я должен аннулировать полный кэшированный объект для того, чтобы сохранить целостность данных. Этот подход подрывает кеширование, как всякий раз, когда есть обновление для сотрудника, мне нужно очистить этот полный объект.

Есть ли какой-либо лучший подход или дизайн, с которым мы можем следовать, чтобы оптимизировать это?

Благодаря

+0

Храните каждый объект в другом ключе, а затем просто недействителен на ключ. Или рассмотрите возможность использования [MongoDB] (https://docs.mongodb.com/manual/tutorial/) – thepirat000

+0

И как это будет сохранено в MongoDb? –

ответ

0

ли это предположить, чтобы быть Redis вопрос? Я предполагаю, что это общая цель.

Извлечь только идентификаторы, затем запросить каждую запись по ее идентификатору.

Сохраните список записей за запрос как просто список идентификаторов.

Теперь вы можете кэшировать список, а также кэшировать каждую запись.

Поскольку вы только получаете идентификаторы, вы можете сделать очень простые суперэффективные индексы данных (данные всегда будут извлекаться непосредственно из индекса, так как это всего лишь идентификатор). Обновления могут иметь или не нуждаться в аннулировании кеша списка, может быть достаточно, чтобы аннулировать кеш записи. Даже если вы аннулируете список, вы по-прежнему будете иметь достаточно хорошую производительность, так как вы вряд ли слишком часто отказываетесь от кэшей входа.

Смежные вопросы