我正在开发一个Rails中的Web应用程序,它需要在响应请求时执行计算密集型数据查找和处理。
我编写了一个执行此计算的ruby C扩展,但为了加快速度,我需要创建一个索引。
为了保持索引的快速,我想在内存中使用C中的哈希表。这个哈希表会很大。大约.5 - 1 GB的内存。我曾考虑过使用数据库,但我需要一个非常特定的索引格式,最终哈希表非常简单,速度非常快。
索引需要能够做两件事:
1)回应查询请求 2)响应将项添加到索引的请求,而不必重新启动程序
我宁愿不在C服务器上编写完整版来构建和管理这个索引。
有没有办法可以用上面两种方法编写ruby C扩展,这种方法会在扩展名调用之间将索引保留在内存中?
如果没有在C上编写完整的服务器,还有其他方法可以实现我的上述需求吗?
最糟糕的情况是,我可以编写一个我的rails应用程序可以与之交谈的C服务器,但我希望能找到更简单的东西。
答案 0 :(得分:0)
我认为哈希已经解决了很多次。一些MemcacheD或Redis的味道。 在localhost上运行它应该使它非常快速和持久(相对于您的应用程序)。如果您真的想要保留它,Redis还可以选择每隔N次更新将缓存备份到磁盘,或者N分钟。
我会在C中进行繁重的计算,以计算出昂贵的东西。然后把它放在Memcache / Redis中,当我把它放回Ruby中时。
如果需要在C语言中将它放在Memcache / Redis中,我相信它们都是用C语言编写的,所以利用这些库不应该太难。