2014-09-18 4 views
4

저의 Redis on project (php-redis)를 사용하기 시작합니다. Symfony2 프로젝트는 내가 발견 :Redis에 저장된 Doctrine 캐시 지우기

https://github.com/snc/SncRedisBundle

내가 설치 과정을 따라 난 구성 :

  • 일부 고객을 더-SQL 데이터 및 캐시
  • 세션 저장
  • 를 저장하지 않으려면
  • Doctrine 메타 데이터, 결과 및 쿼리 캐시

I crea 번들에 새로운 엔티티를 te하고 yml에서 만들고 난 다른 애노테이션 시스템을 가지고 있기 때문에 실패합니다. 그래서 yml 포맷을 삭제하고 애노테이션을 생성합니다.

주석 클래스에서 변경 (예 : 테이블 이름 변경) 할 때마다 스키마 또는 데이터베이스에 영향을 미치지 않습니다. 데이터베이스를 다시 만들거나 모든 옵션을 사용하여 cache : clear를 실행하려고해도 마찬가지입니다.

만약 내가 redis 교리 구성 라인에 주석을 달면 작동하고 스키마의 변경 사항을 볼 수 있습니다.

어쩌면 뭔가를 잊어 버렸거나 교리 교정 캐시를 정리하는 방법을 찾을 수 없습니다.

캐싱을 위해 redis 클라이언트에서 수동으로 위치를 정리해야합니까?

#Snc Redis Bundle 
snc_redis: 
    clients: 
    d2a: 
     type: phpredis 
     alias: d2a 
     dsn: redis://localhost/1 
    cache: 
     type: phpredis 
     alias: cache 
     dsn: redis://localhost 
     logging: true 
    session: 
    client: d2a 
    prefix: redis_session 
    doctrine: 
    metadata_cache: 
     client: cache 
     entity_manager: default   # the name of your entity_manager connection 
     document_manager: default  # the name of your document_manager connection 
    result_cache: 
     client: cache 
     entity_manager: [default, read] # you may specify multiple entity_managers 
    query_cache: 
     client: cache 
     entity_manager: default 
+0

당신이 완전히 개체를 삭제하고 대신 YML의 주석과 함께 그것을 다시 시도? – andy

+0

그래, 내가 그것을 시도, 문제에 대한 설명입니다 – ruudy

답변

1

가장 쉬운 방법은 아니지만 최고의 하나는 교리 캐시 레디 스 DB를 플러시하는 것입니다 : 여기

는 구성입니다.
php app/console redis:flushdb --client=cache 

를 실행 (테스트하지!) 또 다른 방법은 교리의 설정에서 설정 교리 메타 데이터 캐시입니다 http://symfony.com/doc/current/reference/configuration/doctrine.html#caching-drivers

orm: 
    entity_managers: 
     # A collection of different named entity managers (e.g. some_em, another_em) 
     some_em: 
      metadata_cache_driver: 
       type:     array # Required 
       host:     ~ 
       port:     ~ 
       instance_class:  ~ 
       class:    ~