我有一个模型,它通过两个外键关系与另一个模型建立关系。在导入大量数据时,我对这些表(3-4K 行)进行了大量查找,并且试图消除虚假的重复数据库查找。(理想情况下,我的数据库将只进行异步写入/插入)
我玩过按 ID 进行自己的缓存,最近切换到使用Rails.cache
(现在使用 MemoryStore。我不需要与其他实例同步,而且我在导入机器上的内存很丰富)。但是,我发现我得到了相同关联记录的多个副本,我想摆脱这个。
例如:
irb> p = Phone.includes([:site => :client, :btn => :client]).first.
irb> p.site.client.object_id => 67190640
irb> p.btn.client.object_id => 67170780
理想情况下,我希望这些指向内存中的同一个对象。
Rails.cache
会序列化输入/输出的东西,这实际上只会让情况变得更糟,但我对此感到惊讶。我可以覆盖 find_by_id() 或以关联代理使用我的缓存的方式吗?
也许我缺少另一个缓存模块?
(请注意,这个过程没有涉及到web前端。都是模型和ORM)