• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

php - session VS 文件 VS Memcache 用于 PHP 中的缓存?

[复制链接]
菜鸟教程小白 发表于 2022-8-14 07:38:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有一个社交网络

  • 用户表大约有 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-推荐答案


    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/

    回复

    使用道具 举报

    懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关注0

    粉丝2

    帖子830918

    发布主题
    阅读排行 更多
    广告位

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap