0

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

用rails写:

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

从 node.js 读取:

// output
I"helloworld:ET
4

1 回答 1

0

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

这样的事情应该这样做:

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

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

于 2013-10-12T05:48:17.487 回答