我有一个社交网络
用户表约为60,000行
朋友表约为100万 行(用于确定谁是你的 朋友)
我想做一个朋友饲料,墙,无论你喜欢什么叫它,它会显示用户状态贴(推特类型的帖子)之类的东西,它会显示一些不同的项目但是一开始它只会是朋友身份,也许是博客文章。
基本上,您只会看到使用您朋友列表中的用户ID发布的内容。
我一直在努力想出最好的方法,并且没有走得太远,但这是我最新的想法。
目前要构建此Feed,我必须
获取好友ID的列表 大朋友表
从朋友那里获取流数据 上述结果中的ID
加入用户表以获取 发布商图片网址和用户名
然后加入评论表来获取 在Feed项目上发布的评论
构建该Feed是一项重大任务
到目前为止我有3个想法,这是你的帮助可以进入的地方。
Memcache选项:
文件缓存选项:
与memcache选项相同 但是将这些数据保存为数组 到缓存文件而不是内存, 然后将此缓存文件包含在内 页面。
我不确定哪个是最好的 我理解的表现方法 memcache将所有内容存储在内存中 所以有2万人的朋友 可以使用很多的朋友 内存和文件缓存只会 当用户把它放在内存中 如果我是正确的,我需要它。如果我 当用户时,做了文件方法 退出网站,我会删除 有缓存文件所以缓存文件夹 永远不会有太大的文件
会话缓存选项:
请将您的意见或任何建议或信息告诉我,因为我对缓存知之甚少,我已经阅读了很多,但有时其他人的想法有很多帮助
答案 0 :(得分:31)
由于很多原因,Memcache是你最好的选择:
......还有更多;)
关于您对单个缓存项目的内存占用的一些担忧,您有一些选择。我最初的想法是给它一个旋转,看看这些缓存项目真正有多大(你可以找到几个开源的东西来监控实际的缓存使用情况,比如cacti)。我认为它们会比你想象的要小。
如果他们不是,我建议你重新思考你的缓存策略,直到实际缓存,持续多长时间等等。也许你可以从缓存中的几个东西构建feed(即缓存个体)用户数据,然后从缓存中的所有单个项目构建人员的订阅源。在这方面有很多好的文章,只是搜索它们:)
答案 1 :(得分:1)
Memcache中允许的默认最大对象大小为1MB。
@jsaondavis: “会话数据保存到文件中”。
您的上述陈述是错误的。会话可以配置为存储在数据库中。默认会话hadndler是文件。
答案 2 :(得分:1)
Redis将是一个很好的解决方案:
这是Redis Vs上的一个主题。 Memcached的。 听起来像Redis有512mb的存储而不是1mb的限制... QUITE有点不同:)
答案 3 :(得分:1)
错了! Memcached的大小不固定!它取决于您的计算机内存和您设置的配置。