标签: php data-structures trie
我在PHP中设计一个涉及Trie数据结构的应用程序。
对于时间有效的前缀搜索,我使用Trie。
我使用数据库中的记录构建Trie。
现在,数据库有数百万条记录。因此,每次创建Trie然后在其中搜索每个新用户请求都是不可行的。
相反,我只能创建一次Trie并以某种方式存储此信息,这样就不必为每个新用户请求重新创建它,然后可以立即进行搜索。有什么方法我可以使用PHP缓存创建的Trie(不仅仅是针对一个用户会话,而是针对所有用户请求)?
非常感谢任何帮助。
答案 0 :(得分:0)
您有几个标准选项。
使用像memcached
使用Redis缓存,或许可以利用它的一些额外功能。这可能涉及一个过程,您可以将数据加载到REDIS中的结构中,并让您的搜索代码直接针对Redis而不是数据库结果集。
在任何一种情况下,您都要将结果缓存一段可接受的时间,并且由于数据库结果将以某种形式存在于内存中,因此RDBMS上没有任何负载。
在您的相关问题中,您表示他变量的原始序列化形式大小约为200mb。这完全在Redis的最大对象大小(512mb)内,但对于memcached可能会有问题。我个人现在使用Redis进行大多数应用服务器缓存。