memcached - 使用mongodb搭配memcache

 mobiledu2502860957 发布于 2022-10-25 09:34

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

3 个回答
  • 我觉得不知道楼主业务量有多少, mongodb是个混合型数据库, 就是mongodb也有内存数据库部分, 写入瓶颈mongodb并不差, 所以读的业务应该放到redis这种纯的内存数据库中, 写的业务就没必要在费事直接存mongo不是更好?

    2022-10-26 23:09 回答
  • “先将具体内容存入memcache,查询时通过从数据库中得到的索引值再从memcache中取得对应数据;”这句话,没太理解,数据要保存到缓存中吗,要是宕机数据不就没了。

    2022-10-26 23:09 回答
  • 这是一个典型的缓存使用场景,基于你使用的技术方案,有几点是需要考虑清楚的:

    1. 既然选用mongodb,那你这个查询场景应该是尽量用一个key能获取到整个文档的数据,这种查询正是mongodb最擅长的,理论上都不需要再做任何优化了。
    2. 如果你除了上面这个情况,会有多次查询才能得到想要结果的情况,可以考虑使用缓存,现在感觉使用Redis会比Memcached更灵活一点。具体一点处理步骤:
      (1) 每次查询先去缓存中找是否已经有value
      (2) 如果没有,就是把你的查询条件按照一定的规则作为key,查询结果作为value,存入缓存并返回本次查询结果。
      (3) 如果有就直接返回(根据业务需求还要做缓存的失效控制,比如有效时长或有新的写入)
    2022-10-26 23:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有