当使用Enyim memcached客户端存储具有过期时间跨度的数据时,我发现它不起作用。有人能帮上忙吗?
在我的测试代码中,我存储了具有10分钟过期时间的日期,并尝试立即从缓存中获取它,但得到了一个空对象。
Enyim.Caching.MemcachedClient client = new Enyim.Caching.MemcachedClient();
client.Store(Enyim.Caching.Memcached.StoreMode.Set, "one", 1, new TimeSpan(0, 10, 0));
object obj;
client.TryGet("one", out obj); // obj == null
Assert.AreNotEqual(null, obj); // this will fail发布于 2011-12-09 03:39:28
我不确定您的示例是否含糊,或者您是否真的在使用对象类型,但我在使用自定义对象时也遇到了同样的问题。整数、字符串等可以很好地工作,但我的自定义对象一放到缓存中就总是空的。原来我的对象上没有Serializable属性。一旦我把它放在那里,一切都像预期的那样工作。
发布于 2012-10-04 00:19:02
海辛瑟斯在他的问题上相当精确,答案有点不相干。我只有在设置过期时间时才会遇到同样的问题,无论是作为Timespan还是作为DateTime。
在Enyim的github https://github.com/enyim/EnyimMemcached/issues/110上也有一个问题
我们公司的代码库有一个调整过的版本,但它已经过时了。当我找到时间时,我会尝试找到修复并返回到这个位置,并向Enyim发送一个拉取请求。
编辑:我还在github上找到了this。
我可以确认,在memcached服务器的其他版本中不会发生这种情况。我认为这是这个特定构建的错误:使用这个问题构建:没有这个问题的http://www.urielkatz.com/archive/detail/memcached-64-bit-windows构建:http://blog.elijaa.org/index.php?post/2010/08/25/Memcached-1.4.5-for-Windows
想检查一下您正在使用的服务器版本吗?我最初的评论仍然有效,因为我使用两个不同的dll运行测试,调整后的dll可以工作,而CouchBase附带的dll失败了。
发布于 2012-10-06 16:59:01
请检查您的服务器。
1.使用MemCacheD Manager
或
2.使用telnet 127.0.0.1 11211(更改您的服务器设置)
类型:stats
它会显示你的统计数据。
请参阅“时间”项统计信息。
它是第二种格式,你必须转换它,
你可以简单地用"1262517674“来比较,
如果小于"1262517674",那么你的memcached服务器太旧了。
请升级或更改您的memcached版本。
否则,只需更改memcached版本即可
https://stackoverflow.com/questions/6853958
复制相似问题