在 memcached 中存储 ActiveRecord 对象的最佳方式是什么?

2024-03-31

目前在 memcached 中存储 ActiveRecord 对象存在两个问题。

  1. 未定义的类/模块问题()。根据我所读到的内容,这仍然是一个没有人有真正好的解决方案的错误。 cache_fu 插件可能对此有最好的解决方案,将其检索调用包装在一个块中,尝试捕获此错误,解析消息并尝试加载未定义的类/模块。

  2. 臭名昭著的 LH 票证 #1339 (左手票 https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/1339-arbase-should-not-be-nuking-its-children-just-because-it-lost-interest#ticket-1339-54)。仅当您将 cache_classes 设置为 FALSE(开发、测试)时,才会发生此错误。

经过几周的谷歌搜索,我仍然没有找到一种在 memcached 中存储 AR 实例的好技术,而不必处理上面列出的两个问题。

我还没有尝试过的想法是将属性作为字符串从实例中删除(AR 在进行类型转换之前如何从数据库接收它们),将它们存储在 memcached 中,然后从缓存中检索,以某种方式实例化 AR使用这些值的对象。这可能吗?如果是这样,最好的方法是什么?

我只是在寻找其他 Rails 开发人员解决这个问题的方法。


在我们的项目中,我们将对象存储为 XML。

cache.write(user.cache_key, user.to_xml) # write to cache
User.new(Hash.from_xml(cache.read(cache_key))) # reach from cache xml

序列化/反序列化 XML 会产生一些额外成本。但这使我们能够在非 Ruby 应用程序之间共享缓存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 memcached 中存储 ActiveRecord 对象的最佳方式是什么? 的相关文章

随机推荐