ruby-on-rails - 在 memcached 中存储 ActiveRecord 对象的最佳方法是什么?

标签 ruby-on-rails activerecord caching memcached

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

  • 未定义的类/模块问题 (Google search)。根据我的阅读,这仍然是一个没有人有真正好的解决方案的错误。 cache_fu 插件可能对此有最好的解决方案,将它的检索调用包装在一个试图捕获此错误的 block 中,解析消息并尝试加载未定义的类/模块。
  • 臭名昭著的 LH 票 #1339 (LH Ticket)。只有当您将 cache_classes 设置为 FALSE(开发、测试)时,才会发生此错误。

  • 在谷歌上搜索了几周后,我仍然没有找到一种在 memcached 中存储 AR 实例而无需处理上面列出的 2 个问题的好方法。

    我还没有尝试过的想法是将实例中的属性作为字符串删除(就像 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 应用程序之间共享缓存。

    关于ruby-on-rails - 在 memcached 中存储 ActiveRecord 对象的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2393974/

    相关文章:

    SQLite Int64 vs Int32 问题和 SubSonic ActiveRecord

    c# - protobuf-net:如何在用户 session 中存储

    tomcat - Spotfire Server 是否对按需数据进行任何缓存?

    ruby-on-rails - 嵌套属性的自定义验证

    ruby-on-rails - 使用 paypal 定期 gem 升级订阅计划

    php - 它是 Active Record 类的 where(), like() 限制吗?

    javascript - 强制更新时缓存 list 文件不会过期 JavaScript 文件

    ruby-on-rails - 在 Rails 中,如何在不通过数据库的情况下检索belongs_to 关联上的对象?

    ruby-on-rails - 处理与backbone.js 的belongs_to 关系

    ruby-on-rails - Rails 3.0 中的 Arel 究竟是什么?