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