我正在使用rails(Dalli)向memcached写一个字符串,然后使用node.js(node-memcached)读取值,Rails正在使用这些额外的前置内容写入memcache。我还使用命令行检查了memcache。
使用rails编写:
Rails.cache.write("test", 'helloworld' )
从node.js读取:
// output
I"helloworld:ET
答案 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
。