데이터 저장소에 엔티티로 일부 응용 프로그램 구성 항목을 보관하고 싶습니다. 이제 데이터 저장소 뷰어 (개발 환경) 또는 Google Cloud Platform Datastore 사용자 인터페이스 (프로덕션 환경)에서 항목을 업데이트하면 응용 프로그램에서 새 값을 볼 수 없습니다. ndb이 엔티티를 캐시하기 때문입니다.Google App Engine Datastore에 저장된 구성 항목을 새로 고치는 방법은 무엇입니까?
내 질문은 : 데이터 저장소에 구성 항목을 유지하고, Google 사용자 인터페이스에서 업데이트하고, 응용 프로그램에 새로운 값을 제공하는 기술은 무엇입니까?
나는 다음과 같은 생각을 한 다음 ndb.Model
구성 항목을 정의 서브 클래스에 합리적인 _memcache_timeout
을 설정
-하지만 Memcache의 사용은 (불필요한 데이터 저장소 수행 읽기)이 경우에 최적입니다.
캐시 설정을 최대로 유지하고 응용 프로그램의 관리 영역에
flush
작업을 구현하여 항목을 개별적으로 플러시합니다. 엔티티의 실제 캐시 키를 확신 할 수 없기 때문에 이는 까다로운 작업입니다. 하지만 일반적으로_memcache_prefix + key.urlsafe()
이어야하며_memcache_prefix
은 ndb.context module에 정의됩니다.응용 프로그램의 관리 영역에서 모든 구성 항목을 업데이트하고 Google의 데이터 저장소 사용자 인터페이스를 사용하지 마십시오. 추가 작업이 필요합니다.
production 및 development env 콘솔에서 값을 업데이트 한 후 memcache 뷰어로 가서 캐시를 수동으로 비울 수 있습니다. 앱에서 이전 값을 더 이상 보지 않아야합니다. 이것은 모든 항목을 플러시하지만 영향은 작아야합니다. 어쨌든 memcache 값이 사라지는 앱을 준비해야합니다. –
앱이 이러한 구성을 사용하는 방식에 따라 이미 실행중인 앱 인스턴스를 다시 시작해야 할 수도 있습니다. –
@DanCornilescu 다른 목적으로도 캐시를 사용합니다 (구성 항목을 저장하는 것만이 아님). 캐시 전체를 비우는 것은 필자의 경우 성능에 별다른 영향을 미치지 않습니다. 그러나 당신의 생각은 다른 시나리오에서 크게 들립니다. –