PHP中的缓存的会话VS文件VS Memcache? - 代码日志

PHP中的缓存的会话VS文件VS Memcache?

我有一个社交网络

> users表约有60,000行
>朋友桌约100万
行(用来确定你是谁
朋友)

我想要做一个朋友的饲料,墙壁,无论你喜欢什么,它会显示类似用户状态的帖子(twitter类型的帖子),它会显示几个不同的项目,但一开始它将只是朋友状态和也许博客文章。

基本上,您只能看到使用您的朋友列表中的用户标识发布的内容。

我一直试图想出最好的方法,没有得到很远,但这里是我最新的想法。

目前要建立这个饲料,我必须

>获取朋友ID的列表
大朋友桌
>从朋友获取流数据
ids从上述结果
>加入用户表获取
发布商图片网址和用户名
>然后JOIN注释表得到
评论发布在饲料项目上

这是构建饲料的一大任务

到目前为止,我有3个想法,这是您的帮助可以进来的地方。

Memcache选项:

>使用memcache并缓存一个用户
friendlist作为数组时的用户
登录到网站,也是用户的时候
批准一个新的朋友请求
朋友被添加到列表中
会在那里重建缓存。
>除了刚到那里的朋友,我可以保存朋友的图片网址和用户名,这样可以通过在构建朋友Feed时消除这个查询来加速事情。

文件缓存选项:

>执行与memcache选项相同的操作
但是将数据保存为数组
到缓存文件而不是内存,
然后将此缓存文件加入
这一页。
>我不知道哪个是最好的
性能方法我明白了
memcache将所有内容存储在内存中
所以有这样的朋友有2万
可以使用很多的朋友
内存和文件缓存只会
把它放在内存当用户
需要它,如果我是正确的。另外如果我
做了一个文件的方法,当一个用户
登出网站,我会删除
有缓存文件,所以缓存文件夹
永远不会有太大的文件

会话缓存选项:

>与上面的文件缓存相同,我只是意识到会话数据被保存到一个文件中,不会使它成为一个缓存?

请给我您的意见或任何建议或信息,因为我没有很多的缓存知识,我已经阅读了很多,但有时其他人的想法有很多帮助

Memcache是​​你最好的打赌,原因很多:

>这是真的很快 – 一切都在记忆中,它是高度优化的情况,就像你的(和缓存一般:)
>它是分布式的 – 这意味着如果您有多个Web /应用程序服务器运行,它们都可以访问相同的缓存
>您可以为多个服务器存储memcache – 如果您有几个相对未充分利用的服务器(或几个专用缓存服务器),则可以将它们集中到一个大缓存中
>这是超级可扩展(由于之前提到的原因)
>它有很好的PHP支持 – 用于memcache的PECL包最近更新了很多新的好处
>您甚至可以将用户会话存储在memcache中 – 只需将其设置在php.ini文件中即可。这比在数据库中存储会话要快得多,并允许您的会话在多个Web主机之间持续存在(如果您处于负载平衡的情况)…这也将为您的网站提供一些性能提升,因为不需要在每个请求上点击文件系统/数据库以获取会话信息。

… 还有很多 😉

对于您对个别缓存项目的内存占用的一些担忧,您有几个选择。我最初的想法是给它一个旋转,看看这些缓存项目真的有多大(你可以找到几个开源的东西来监控实际的缓存使用,如cacti)。我认为他们会比你想象的要小。

如果没有,我建议您重新考虑您的缓存策略,就您实际缓存的时间长短等等。也许您可以从高速缓存中的几项内容构建源(即缓存单个用户数据,然后从高速缓存中的所有这些个别项目构建一个人的Feed)。那边有很多很好的文章,只是搜索’em out 🙂

http://stackoverflow.com/questions/1197859/session-vs-file-vs-memcache-for-a-cache-in-php

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:PHP中的缓存的会话VS文件VS Memcache?