Помните, что база данных оптимизирована для выполнения запросов, соответствующих произвольным условиям, а хранилище кешей - это быстрый поиск, если у вас есть известный ключ. Вы должны использовать кеш только для того, что вы уже отфильтровали или подготовили.
Предполагая ключ кеша, такой как cities/1/stores
для всех магазинов в городе 1, вы можете кэшировать эту коллекцию и вытащить ее позже.
Если у вас есть большое количество магазинов, это будет анти-оптимизация, чтобы попытаться кэшировать Store.all
в качестве одного ключа кеша, а затем попытаться отфильтровать его с помощью рубина для данного города или любых других критериев. Ваша программа будет вынуждена перебирать всех городов, так как массивы не имеют индексов на city_id
. Вам будет намного лучше позволить базе данных выполнить эту работу с предложением «где» и использовать мощность индексирования, предоставляемую базой данных.