如何将PHP Trie存储在以后的所有用途中?

时间:2017-06-24 18:14:44

标签: php data-structures trie

我在PHP中设计一个涉及Trie数据结构的应用程序。

对于时间有效的前缀搜索,我使用Trie。

我使用数据库中的记录构建Trie。

现在,数据库有数百万条记录。因此,每次创建Trie然后在其中搜索每个新用户请求都是不可行的。

相反,我只能创建一次Trie并以某种方式存储此信息,这样就不必为每个新用户请求重新创建它,然后可以立即进行搜索。有什么方法我可以使用PHP缓存创建的Trie(不仅仅是针对一个用户会话,而是针对所有用户请求)?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您有几个标准选项。

使用像memcached

这样的简单缓存将数据库结果缓存到内存中

使用Redis缓存,或许可以利用它的一些额外功能。这可能涉及一个过程,您可以将数据加载到REDIS中的结构中,并让您的搜索代码直接针对Redis而不是数据库结果集。

在任何一种情况下,您都要将结果缓存一段可接受的时间,并且由于数据库结果将以某种形式存在于内存中,因此RDBMS上没有任何负载。

在您的相关问题中,您表示他变量的原始序列化形式大小约为200mb。这完全在Redis的最大对象大小(512mb)内,但对于memcached可能会有问题。我个人现在使用Redis进行大多数应用服务器缓存。