2011-05-05 5 views
0

키 값이 이미 캐시 된 다음 데이터베이스에서 업데이트 된 경우 캐시에서 키를 무효화하거나 캐시에서 레코드를 업데이트해야합니다.Memcached에서 레코드를 업데이트하는 것보다 레코드를 삭제할 때의 이점은 무엇입니까?

업데이트와의 비교 : 업데이트는 향후 DB 히트를 잠재적으로 저장하는 이점이 있습니다.

그런 다음 삭제를 통한 삭제의 주요 이점은 무엇입니까?

답변

0

항목을 삭제하면 잠재적으로 불필요한로드가 발생하지 않습니다. 예를 들어, 레코드가 캐시에서 읽히기 전에 연속적으로 여러 번 업데이트된다고 가정 해보십시오. 아무런 이유없이 캐시를 여러 번 업데이트 할 것입니다. 첫 번째 업데이트 후 캐시에서 항목을 제거하면 이후의 모든 업데이트가 실행되고 (매번 캐시를 채우지 않아도 됨) 항목이 실제로 필요할 때만 데이터베이스에서로드되어 삽입됩니다 캐시.

+0

그래서 DB에서 읽은 것을 사용하여 캐시를 업데이트한다고 가정하고 있습니다. 하나의 키 - 값 쌍만 업데이트하면되는 상황을 생각해보십시오. db 업데이트가 성공하면 (Java에서는 executeUpdate()가 1을 반환 함) DB를 다시 쿼리 할 필요가 없습니다. 대신 직접적으로 새로운 값으로 캐시를 업데이트하십시오. 이 경우 캐시를 업데이트하는 오버 헤드가 최소화됩니다. 맞습니까? – zzhang

+0

자주 읽는 것보다 더 자주 쓰는 데이터는 캐싱에 좋은 후보가 아닙니다. 적어도 당신은 이런 식으로 캐싱에서 가치를 얻고 있는지 확인하기 위해 일부 데이터를 수집해야합니다. –

+0

@ No4Clipper - DB의 비용을 감안하더라도, 필요하지 않은 캐시 항목을 계속 업데이트하고 있습니다. 항목에 대한 다음 요청을 캐시에 가져 오면 캐시의 항목 수명이 적절하게 제어됩니다. 캐시에서 항목을 업데이트하면 인위적으로 캐시에서 수명이 연장됩니다. –

0

삭제를 통한 삭제의 가장 큰 장점은 더 간단하다는 것입니다. 다음 작업을 수행해야 할 수도 있습니다 업데이트하려면 :

  • 이 캐스 명령에 사용하기 위해 원래 CAS 고유 한 값의 사본을 보관 (아마 삭제 다시 떨어지는)에 CAS 명령의

    • 핸들 실패를
    • 캐시에 넣기 위해 완전히 새로운 값을 생성 할 수 있어야합니다.

    이러한 요구 사항은 코드를 중요한 방식으로 구조화하는 방법을 제한합니다. 일관성 요구 사항이 특히 약한 경우 간단하게 구현할 수있는 set 명령으로 캐시에 값을 넣을 수 있습니다.

  • 관련 문제