gpt4 book ai didi

php - PHP 中的数组查找速度;长缓存键

转载 作者:行者123 更新时间:2023-12-01 11:56:30 25 4
gpt4 key购买 nike

我正在研究一种方法,由于它的操作和使用相同参数调用的频率的开销,将从缓存返回值中受益。

我将 serialize()-ing 缓存键的参数,但由于数组参数很长,这可能会导致键很长。

  • PHP 数组索引和查找是否会受到如此长的键的影响(想想从 250B 到 1kB+)?
  • 到目前为止一切顺利,但我是否面临着这可能会在某个时候对我造成巨大失败的情况?
  • 基本上,我应该md5()(或替代) key 吗?

次要说明:
这只是按请求缓存,没有永久存储。所讨论的方法是 View 助手的方法,对于每个 View 生成,它可能被调用 500 次或更多。

最佳答案

您绝对应该散列 key 。你可能会说“当我可以在每个时间点连接一个唯一的 key 时,我为什么要冒险得到 collisons 呢?”。简单的答案是,如果您通过字符串连接生成缓存键,则必须始终使用最坏的空间需求情况进行计算,以估计 ram 使用情况。

因此,如果您有一个包含 200 个条目的缓存 .. 和 2 个最多包含 20 个字符的字符串的字段。最坏的情况是 200*2*20*(字符大小)。如果您在每个可能的并行连接上加载完整的缓存,这将乘以并行连接的数量。

对于哈希,您总是有最小 ram 要求 = 关键字段的最大 ram 要求。

如果您有许多键连接的值,这将非常糟糕。

编辑:

即使您根据请求使用它,数组也会消耗内存。尽管它是一个缓存,但它从请求的开始到结束都存在。因此,您需要考虑到它会占用一定数量的内存空间,并且在使用哈希时它会消耗固定数量的空间。

第二件事是需要比较键。如果您使用字符串键访问关联数组,您的解释器需要按字符比较键。如果您有用于生成 key 的散列方法,这也将是固定数量的步骤。

如果您使用串联,则步数将介于最好和最坏情况之间。

关于php - PHP 中的数组查找速度;长缓存键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com