【发布时间】:2009-11-12 22:16:34
【问题描述】:
我们正在通过 enyim 使用 memcached 1.2.4,并且发现很难将一些对象缓存起来。如果我查看 memcache 控制台,它只会显示“NOT_STORED”。
我认为我们需要使用 [serializable] 但这并不总是有效。我找不到任何文档或相关的谷歌点击。
这里有人有线索吗?
谢谢
【问题讨论】:
标签: memcached
我们正在通过 enyim 使用 memcached 1.2.4,并且发现很难将一些对象缓存起来。如果我查看 memcache 控制台,它只会显示“NOT_STORED”。
我认为我们需要使用 [serializable] 但这并不总是有效。我找不到任何文档或相关的谷歌点击。
这里有人有线索吗?
谢谢
【问题讨论】:
标签: memcached
强烈建议升级你的 memcached 版本。
NOT_STORED 意味着您的数据没有被存储。如果您使用add 命令存储数据,这意味着该键下已经有数据。如果您使用replace,则表示该键下没有 数据。你可能是set。
【讨论】:
感谢您迟到的回复。
问题有两个方面。对于某些对象,使用 [Serializable] 是不够的,所以我们必须实现 ISerializable。我们也使用 ADD 而不是 SET。
从内存中我找不到 memcached 的升级,一旦我们修复了上面的问题,它就可以工作了。
干杯
【讨论】:
我遇到了这个问题...我正在运行类似的东西:
var = CACHE.fetch("key_name",1.day,true) do
ModelName.find_by_id(id)
end
所以我让活动记录为我找到了一条记录,但我不知道 memcached 不存储 nil 值。发生的事情是活动记录返回 nil,因为它找不到记录,因此我告诉 memcache 存储一个 nil 值。解决方法很简单:
var = CACHE.fetch("key_name",1.day,true) do
ModelName.find_by_id(id) || ""
end
我使用 Ruby 进行编码。希望这会有所帮助。
【讨论】: