怎么做nodejs+mongodb缓存??
发布于 9 年前 作者 XueQian 7133 次浏览 最后一次编辑是 8 年前 来自 问答

类似于朋友圈,当大量用户拉feed时,是不是需要一个缓存来放置最新的数据呢? 应该选择Redis 还是Memcached 呢? 如果选择redis,是不是不能和mongodb放在同一个服务器上? “if you put MongoDB and Redis on the same box and MongoDB data do not fit in memory, MongoDB will “steal” memory to Redis via the OS paging mechanism. The consequence is a major performance drop for Redis.” 缓存里应该存什么?存所有的原始数据吗??还是只存_id字段之类的?? http://www.infoworld.com/article/2825890/application-development/why-redis-beats-memcached-for-caching.html http://stackoverflow.com/questions/11218941/architecture-for-redis-cache-mongo-for-persistence

14 回复

@359056163 没有必要做缓存吗?那么拉feed时,如果几万条数据,用一个get请求返回吗??

有个一个叫做 pomelo-sync 的东西,你可以在 github 上找找

@359056163 pomelo sync 模块是管理游戏进程内需要持久化的数据在内存和存储系统之间的同步,提供一种异步的同步方式,根据用户配置定时的同步数据到持久层,如MYSQL,Redis,文件等。不太适合我的朋友圈需求吧 https://github.com/NetEase/pomelo-sync https://github.com/NetEase/pomelo/wiki/pomelo-sync使用文档

@XueQian 举例只是举了MySQL,其实mongodb也是可以得。

@359056163 文档上写的是管理游戏进程。。。。我要做的事朋友圈。也可以吗?

@XueQian 可以得。处理的都是数据。它的更新方式也比较灵活。可以自己定义接口。

@359056163 恩恩,好的,我好好看下,有问题再问您,谢谢了

我也在了解中

没必要加缓存,如果需要,加一个solr或者elasticsearch才是正道

@i5ting 我也这么觉得。mongodb的写入速度本身就非常好,而且,数据库本身也有使用内存缓存一部分数据。

@i5ting solr是用于搜索的,和缓存有啥关系?

@i5ting 您好,我刚查了下,您说的两个都是和搜索引擎有关的,和缓存也有关吗?或者是您的意思我没有懂??

@XueQian

mongodb的读的速度和redis等差不多,所以没必要加cache,你的问题是朋友圈,当大量用户拉feed时,比如30w用户,1年1亿挑以上,怕查询速度慢下来。

那最好的做法就是搜索引擎来存放数据,用于查看历史记录接口查看,热数据放到redis里,新数据仍旧走mongodb就足够快,足够扩展了

回到顶部