ruby-on-rails - 如何将rails的activerecord对象保存到redis

标签 ruby-on-rails ruby ruby-on-rails-3 activerecord redis

我正在使用 redis 作为我的网络缓存,我想将那些 activerecord 对象直接存储到 redis,但是使用 redis-rb我收到一个错误。

好像不能序列化什么的。有没有为我做这个的库? 我必须将它序列化为 json 格式吗?

哪种序列化格式最有效?

最佳答案

Redis 存储字符串(以及其他一些字符串数据结构);因此您可以随心所欲地序列化为 Redis 值,只要您以字符串结尾即可。

JSON 可能是最好的起点,因为它精简、不太脆弱、适用于实时升级模式,并且在原地可读。稍后您可以根据需要添加更多复杂性以满足您的目标,例如压缩。 #to_json 和 #from_json 已经在 ActiveRecord 上了,如果你想使用 JSON(相对来说,使用 YAJL 或它的同类产品应该不会太慢。)#to_xml 也在那里,如果你喜欢 S&M。

原始编码也可以工作,但偶尔会出现可怕的错误(在 LZO 压缩后,我的编码对象超过 2MB,而在 JSON 中只有几 K。)

如果这对您来说真的是一个瓶颈,您将需要针对您的目标运行您自己的效率测试,例如,写入速度、读取速度或存储大小,使用您自己的对象和数据模式。

关于ruby-on-rails - 如何将rails的activerecord对象保存到redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5113008/

相关文章:

javascript - Rails 3.2 js.erb 文件转义 JS

ruby-on-rails - 将模型上的所有方法调用委托(delegate)给关联

ruby-on-rails - 使用 File.open 写入 YAML 文件会换行更长的行

ruby-on-rails - 如何在 Rails 3 的功能测试中使用 polymorphic_path

ruby-on-rails - Ruby On Rails 助手——在助手中使用实例变量

ruby-on-rails - Rails 发现获取 ActiveRecord::RecordNotFound

mysql - 如何设置 Ruby on Rails 4+ 应用程序的默认数据库隔离级别

ruby - Chef Recipes - 在 ruby​​_block 中设置节点属性

ruby-on-rails - Seahorse::Client::NetworkingError(主机名 "mybucketname.s3.s3-us-west-2.amazonaws.com"与服务器证书不匹配)

ruby-on-rails-3 - 无法在 Mountain Lion 上安装 rmagick gem