如何强制Rails缓存无法逃脱?

时间:2013-10-11 17:47:08

标签: ruby-on-rails memcached

我正在使用rails(Dalli)向memcached写一个字符串,然后使用node.js(node-memcached)读取值,Rails正在使用这些额外的前置内容写入memcache。我还使用命令行检查了memcache。

使用rails编写:

Rails.cache.write("test", 'helloworld' )

从node.js读取:

// output
I"helloworld:ET

1 个答案:

答案 0 :(得分:0)

发生的事情是Dalli在将值写入缓存之前调用Marshal.dump('helloworld')。为了避免这种情况,您需要直接与Dalli交互而不是通过Rails.cache,然后您可以传递:raw => true选项以使Dalli存储您传递给它的确切值。

这样的事情应该这样做:

dcache = Dalli::Client.new
dcache.set("test", 'helloworld', 0, :raw => true)

第三个参数(0)是ttl(生存时间)值。 0表示该值永不过期。要使缓存中的值到期,您可以设置非零值,即以秒为单位测量的时间。因此,要在5分钟后使值过期,您可以通过300