찾다

 >  Q&A  >  본문

memcached - 使用mongodb搭配memcache

网站预计会有很大的查询量,相比之下写入数据库的操作要少很多。
我想的是把数据库内容分成两种,一种是用于索引的内容,内容包含各种所需信息对应的索引项,另一种是其他所要查询的具体数据内容。
先将具体内容存入memcache,查询时通过从数据库中得到的索引值再从memcache中取得对应数据;
写入数据时则直接写到mongodb中;
不知道这种做法有什么不妥,来这寻求下建议~~

PHPzPHPz2765일 전823

모든 응답(3)나는 대답할 것이다

  • 天蓬老师

    天蓬老师2017-04-24 16:01:35

    이것은 일반적인 캐싱 사용 시나리오입니다. 사용하는 기술 솔루션에 따라 고려해야 할 몇 가지 사항이 있습니다.

    1. mongodb를 선택했으므로 쿼리 시나리오는 하나의 키를 사용하여 전체 문서의 데이터를 얻으려고 해야 합니다. 이러한 종류의 쿼리는 mongodb가 가장 적합하며 이론적으로 추가 최적화가 필요하지 않습니다.
    2. 위의 상황 외에 원하는 결과를 얻기 위한 쿼리가 여러 개라면 캐시 사용을 고려해 볼 수 있습니다. 이제는 Memcached보다 Redis를 사용하는 것이 더 유연하다고 생각합니다. 더 구체적인 단계:
      (1) 각 쿼리에 대해 먼저 캐시로 이동하여 이미 값이 있는지 확인합니다
      (2) 그렇지 않은 경우 특정 규칙에 따라 쿼리 조건을 키로 사용하고 쿼리 결과를 값으로 사용하여 캐시에 저장하고 이 쿼리의 결과를 반환합니다.
      (3) 그렇다면 직접 반환합니다(비즈니스 요구에 따라 유효 기간이나 신규 쓰기 등 캐시 무효화 제어도 수행해야 함)

    회신하다
    0
  • 我想大声告诉你

    我想大声告诉你2017-04-24 16:01:35

    "먼저 특정 콘텐츠를 memcache에 저장한 다음, 쿼리 중에 데이터베이스에서 얻은 인덱스 값을 통해 memcache에서 해당 데이터를 얻습니다." 이 문장이 잘 이해가 되지 않습니다. 다운된 경우 데이터가 사라집니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-24 16:01:35

    포스터가 얼마나 사업을 하는지 모르겠습니다. Mongodb도 인메모리 데이터베이스 부분을 가지고 있습니다. Mongodb는 쓰기 병목 현상이 심하지 않으므로 읽기 사업은 순수 데이터베이스에 배치해야 합니다. Redis와 같은 In-Memory 데이터베이스를 걱정할 필요 없이 Mongo에 직접 저장하는 것이 더 좋지 않을까요?

    회신하다
    0
  • 취소회신하다