微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在PHP中缓存中/大型数据集的一些最好的工具/策略是什么?

我有你的平均 PHP应用程序(运行在Windows服务器上)与表单和数据网格/列表,其中一些需要运行相当复杂的查询,我已经优化到最大,我怀疑有一吨可以做到使他们跑得快得多给定依赖于结构的其他进程,我也没有更改数据库结构的选项.因此,由于缓存在应用程序中并没有被很多用处,这似乎是下一个合乎逻辑的步骤.

我最近读过代代缓存,并提出了一个体面的机制来自动缓存查询在我的应用程序.我现在的问题是,对于似乎是逻辑选择的两个选项,我遇到了大小限制. WinCache限制您总共85MB,这不会削减它,memcached将一个项目限制为1MB,如果您有一个查询返回相当大量的记录并且有很多的话,似乎不是很多的领域.好的,确切地说,似乎memcached现在允许你设置一个更大的大小,但事实上,它是1MB认情况下,只允许这让我质疑我正在努力做什么.

我的网格允许一次返回的最大记录数为1000个记录,这是可以存储在缓存中的最大记录数(当然,每个记录的字段有所不同).我知道大量的用户可能意味着缓存会很快填满,但并发用户数量通常不是很大,从我读过来看,如果memcached的内存不足,那么它将会摆脱最旧的缓存的项目,所以我没有看到一个大的缺点,存储更大的数据集,除非操作非常昂贵,但从我所看到的似乎不是这样.

总而言之,我想知道的是,如果在memcached中存储更大的数据集是一个坏主意(并且被授权,我知道我不想在那里存储一个百万条记录的查询).如果这是一个坏主意,那么在检索这些数据集时,缓存/提高性能的好选择是什么?

除非有很好的理由通过线将数据发送到缓存,否则不要.

如果可能的话,使用本地的进程缓存解决方案,如APC(u)或YAC(YAC是非常聪明的软件,可能不稳定).

当APC(u)或wincache实际上将数组和标量复制到共享存储器中时,它们按位逐位执行,它们不会串行化,否则不必更改数据的格式,事实上有0个网络开销使本地缓存解决方案像APC(u)比任何像memcached或redis这样快得多.

APC(u)对段或条目的大小没有任何限制,您应该可以将其配置为使用您的操作系统允许您映射的所有内存.

当然,如果你有一个很好的理由想通过电话发送,那么这是非常无用的信息;)

原文地址:https://www.jb51.cc/php/131975.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐