Итак, у меня есть веб-приложение, где есть определенный объект базы данных с атрибутами, которые я хотел бы кэшировать в магазине redis
. Относительно просто сделать вручную, с чем-то, как показано ниже:Соответственно изменение метода __setattr__ для сопоставленных объектов
db_object.update({<attribute>: <value>})
redis.set(db_object.id, <value>)
Проблема здесь в том, что это признак, который изменяется во многих местах по всему кодовую. Не означает, что этот подход не будет работать, это просто означает, что он делает код очень повторяющимся. Я бы предпочел просто иметь оболочку для кеша, к которой я могу получить доступ, когда мне нужно. Это означает, что в любое время изменить конкретный атрибут я заинтересован в Я хотел бы обновить свой REDIS магазин, теоретически так:
def __setattr__(self, name, value):
self.__dict__[name] = value
if name == <attribute>:
redis.set(self.id, value)
, который позволит решить все мои проблемы. Единственная проблема заключается в том, что, как подробно here, я не могу напрямую изменить __dict__
в отображаемых объектах. Как я могу достичь такого же эффекта?