Кэширование на уровне QuerySet в Django

Я пытаюсь получить набор запросов из кэша, но не уверен, есть ли в этом смысл.

У меня есть следующий метод внутри custom queryset:

    def queryset_from_cache(self, key: str=None, timeout: int=60):
        # Generate a key based on the query.
        if key is None:
            key = self.__generate_key # ()

        # If the cache has the key, return the cached object.
        cached_object = cache.get(key, None)

        # If the cache doesn't have the key, set the cache, and then return the cached object.
        if cached_object is None:
            cache.set(key, self, timeout=timeout)

        return cached_object

Использование в основном заключается в добавлении его к методу django QuerySet, например:

queryset = MyModel.objects.filter(name__in=["Jane","John"]).queryset_from_cache()
Наконец, мой вопрос:

Будет ли работать такое использование? Или он будет пытаться попасть в базу данных, несмотря ни на что?

Это действительно классная идея, но я не уверен, что вы можете полностью кэшировать объекты... Я думаю, что только атрибуты

Теперь это имеет точку. Grom то, что я вижу из ограниченного кода, который я видел, не знаю, есть ли в этом смысл, если только фильтрация для Джейн и Джона (и только для них) не является очень распространенной. Очень узко. Может просто попробовать кэшировать ВСЕХ пользователей или только отдельных пользователей, и только те атрибуты, которые вам нужны

Вернуться на верх