是用代码分别更新到redis和postgresql数据库(谁先谁后)还是只更新到redis,然后通过队列异步更新到数据库?如果有详细的做法更好,谢谢!PS:有人谁用过redis-fdw吗?
ringa_lee2017-04-22 09:02:03
redis와 데이터베이스가 동시에 업데이트된다면 실제로는 캐시 업데이트 전략 문제입니다. 내 의견을 말씀드리겠습니다. 이를 출발점으로 생각해 보겠습니다.
이러한 유형의 문제에는 일반적으로 두 가지 전략이 사용됩니다.
1. 캐시 쓰기 시 업데이트: DB 쓰기가 성공한 후 캐시가 업데이트된다는 의미입니다. 이 전략은 침투를 줄일 수 있지만 쉽게 데이터 불일치를 일으킬 수 있습니다.
2. 캐시를 읽을 때 업데이트: DB가 성공적으로 작성된 후에만 캐시를 삭제하고, 읽어야 할 경우 캐시를 다시 빌드한다는 의미입니다. 이 전략의 일관성은 보장할 수 있지만 침투력이 커서 DB에 쉽게 압박을 가할 수 있습니다.
(검색해 보니 캐시 업데이트 모드가 여러 가지가 있더군요. 위에 언급한 두 가지만 제가 아는 내용입니다
1.Write-through 즉시 쓰기
2.Write-behind 캐시를 먼저 쓰고 쓰기 이벤트를 Queue에 넣은 다음 데이터베이스에 씁니다
3. 제거 정책 캐시 업데이트 정책은 캐시에 있는 데이터를 직접 삭제하고 다음에 읽을 때 업데이트될 때까지 기다립니다.
4. 복제
5. P2P(P2P)
)
redis만 업데이트한 다음 데이터베이스에 비동기적으로 업데이트하면 캐시가 다운된 후 데이터를 재구성하기 어려울 수 있습니다. 데이터가 엄격하게 정확할 필요는 없지만 빠르게 액세스해야 하는 경우 다음을 수행할 수 있습니다. 페이지 방문자 수와 같은 방식으로 플레이하는 것을 고려하십시오.
Redis-fdw는 사용한 적이 없습니다.