OGeek|极客世界-中国程序员成长平台
标题: php - session VS 文件 VS Memcache 用于 PHP 中的缓存? [打印本页]
作者: 菜鸟教程小白 时间: 2022-8-14 07:38
标题: php - session VS 文件 VS Memcache 用于 PHP 中的缓存?
我有一个社交网络
用户表大约有 60,000 行 好友表100万左右
行(用于确定谁是您的
friend )
我想做一个 friend 提要,墙,不管你喜欢叫它什么,它会显示用户状态帖子(推特类型帖子),它会显示一些不同的项目,但一开始它只是 friend 状态和也许博客文章。
基本上,您只会看到使用好友列表中的用户 ID 发布的内容。
我一直在努力想出最好的方法,但还没有走多远,但这是我的最新想法。
目前要构建此提要,我必须
获取好友 ID 列表
大 friend table 从好友处获取流数据
来自上述结果的 ID JOIN 用户表以获取
发布者图片 URL 和用户名 然后JOIN评论表得到
张贴在提要项目上的评论
这是构建该提要的一项重大任务
到目前为止,我有 3 个想法,这是您可以提供帮助的地方。
内存缓存选项:
使用 memcache 并缓存一个用户
friend 列表作为一个数组,当用户
登录网站,也当用户
批准一个新的好友请求
要添加到列表中的 friend ,它
会重建那里的缓存。 除了只是让 friend 到那里,我还可以保存 friend 的图片 URL 和用户名,这将通过在构建 friend 提要时消除此查询来再次加快速度。
文件缓存选项:
执行与 memcache 选项相同的操作
确实但将此数据保存为数组
到缓存文件而不是内存,
然后将此缓存文件包含到
这一页。 我不确定哪个是最好的
我理解的表现方法
memcache 将所有内容存储在内存中
所以有20,000的 friend
可以使用很多的 friend
内存和文件缓存只会
当用户把它放在内存中
如果我是对的,需要它。另外如果我
做了文件方法,当用户
退出网站,我会删除
有缓存文件所以缓存文件夹
文件永远不会太大
session 缓存选项:
与上面的文件缓存相同,我刚刚意识到 session 数据被保存到一个文件中,所以它不能成为缓存吗?
请给我您的意见或任何建议或信息,因为我对缓存没有太多了解,我已经阅读了很多,但有时其他人的想法很有帮助
Best Answer-推荐答案 strong>
Memcache 是您最好的选择,原因有很多:
它真的很快 - 一切都在内存中,并且针对像您这样的情况进行了高度优化(以及一般的缓存它是分布式的 - 这意味着如果您有多个 Web/应用服务器在运行,它们都可以访问相同的缓存 您可以将多台服务器用于内存缓存 - 如果您有几台相对未充分利用的服务器(或几台专用缓存服务器),您可以将它们全部集中到一个大缓存中 它是 super 可扩展的(出于前面提到的原因)它有很好的 PHP 支持 - 用于 memcache 的 PECL 包最近更新了很多新的优点 您甚至可以将您的用户 session 存储在 memcache 中——只需在您的 php.ini 文件中进行设置。这比将 session 存储在数据库中要快得多,并且允许您的 session 在多个 Web 主机上持续存在(如果您处于负载平衡的情况下)...这也将为您的站点提供一些性能提升,因为没有必要在每个请求上访问文件系统/数据库以获取 session 信息。
... 还有很多 ;)
至于您对单个缓存项的内存占用量的一些担忧,您有几个选择。我最初的想法是试一试,看看这些缓存项到底有多大(你可以找到几个开源的东西来监控实际的缓存使用情况,比如 cacti)。我认为它们会比你想象的要小。
如果不是,我建议重新考虑您的缓存策略,就您实际缓存的内容、缓存时间等而言。也许您可以从缓存中已有的几项内容构建提要(即缓存个人用户数据,然后从缓存中的所有这些单个项目为一个人构建提要)。在这方面有很多好文章,只需搜索它们
关于php - session VS 文件 VS Memcache 用于 PHP 中的缓存?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/1197859/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) |
Powered by Discuz! X3.4 |