好的,所以我正在开发这个项目,要求我在桌面上进行内存键值存储查找。我正在使用的业务规则也规定必须从每个单独节点的内存中读取该表,并且该表需要在多个请求中保持不变。
所以显而易见的解决方案是使用APC和apc_fetch();和apc_store();
问题是该表将包含成千上万的键值对,并且将是几兆字节(这将运行的机器是内存巨头)
如果APC在加载时对用户缓存进行序列化,那么我在性能方面会有一些顾虑。
如果不是那么这不应该是那么大的交易,那么它实际上将是更优化的解决方案。
但是,如果它不是一个更好的选择,在C中编写一个自定义扩展,对已保留到磁盘的结构的排序文件进行二进制搜索?
或者(希望)会写自定义扩展程序根本不值得。
胜利,失败,快速思考?提前致谢
答案 0 :(得分:0)
虽然APC将在加载时序列化,但是apc_fetch()
的实际查找是通过哈希表完成的,并且不会出现如您所描述的瓶颈。由于您的计算机是内存庞然大物,因此您应该考虑将APC的表调整到足以将所有键/值对保存在内存中。这可以通过将php.ini中的apc.user_entries_hint
设置为适合您应用程序的值来完成。
答案 1 :(得分:0)
尝试查看https://serverfault.com/questions/57915/ram-disk-and-physical-raid
基本上可以查看linux上的tmpfs
并将其用作一个规则文件系统,无论你想要什么规则。它还易于在应用程序外部进行调试和检查。