1
그래서 redis
저장소에 캐시하려는 속성이있는 특정 데이터베이스 객체가있는 웹 응용 프로그램이 있습니다. 비교적 간단하게 아래처럼 뭔가 수동으로해야 할 일 :매핑 된 객체에 대해 __setattr__ 메소드를 적절하게 변경합니다.
db_object.update({<attribute>: <value>})
redis.set(db_object.id, <value>)
여기서 문제는이 코드베이스에 걸쳐 많은 장소에서 변경되는 속성 점이다. 이 접근법이 작동하지 않는다는 것을 의미하지는 않는다. 단지 반복적 인 코드를 만드는 것을 의미한다. 차라리 필요할 때마다 직접 액세스 할 수있는 캐시 용 래퍼를 가지고 있습니다. 이것은 내가 내 레디 스 저장소를 업데이 트하려는 언제든지 내가 이론적과 같이, 내가 관심이있는 특정 속성을 변경하는 것이 의미 : 내 모든 문제를 해결하는 것입니다
def __setattr__(self, name, value):
self.__dict__[name] = value
if name == <attribute>:
redis.set(self.id, value)
. 유일한 문제는 상세한
here으로 매핑 된 객체에서
__dict__
을 직접 수정할 수 없다는 것입니다. 같은 효과를 얻으려면 어떻게해야합니까?