问题
似乎无论我们将memcached配置为什么值作为到期时间,高速缓存中的所有项都会获得5分钟的到期时间。
我们尝试过什么
在所有情况下,当一个项目被缓存并且我检索到cachedump时,到期时间戳将来只有5分钟。
这非常令人沮丧,因为除了这个主要缺陷外,memcached的工作非常棒。
设置
的Web.config
<enyimmemcache>
<memcached protocol="Binary">
<servers>
<add key="MemcachedAddress" address="127.0.0.1" port="11211" />
<!-- Add new servers here -->
</servers>
<socketPool connectionTimeout="00:00:02" />
<cache region="system" expiration="0" priority="5" />
</memcached>
</enyimmemcache>
Hibernate配置
<property name="cache.provider_class">NHibernate.Caches.EnyimMemcached.MemCacheProvider,NHibernate.Caches.EnyimMemcached</property>
<property name="cache.use_second_level_cache">true</property>
Stats.bat
@echo off>nul
setlocal EnableDelayedExpansion
IF "%1"=="-o" rm dump.log
set SAVESTAMP=%DATE:/=-%@%TIME::=:%
echo --------------[%SAVESTAMP%]-------------- >> dump.log
echo stats items | nc 127.0.0.1 11211 > statsitems
SET myvar=""
FOR /f "tokens=1,2,3 delims=:" %%i in (statsitems) do (
if NOT %%j==!myvar! (
SET myvar=%%j
echo stats cachedump !myvar! 1000000 | nc 127.0.0.1 11211 >> dump.log
)
)
rm statsitems
答案 0 :(得分:0)
解决方案
因此事实证明我对该主题的分散信息来源导致我使用不正确的配置设置。最后,我决定从github上获取Enyim源并自己调查这个问题,结果发现web.config中的配置甚至没有被使用。由于Enyim正在寻找名为enyim.com
的部分,而我正在使用com.enyim
,因此请使用语法。正确的配置如下。
<强>的Web.config 强>
<sectionGroup name="enyim.com">
<section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching" />
<section name="log" type="Enyim.Caching.Configuration.LoggerSection, Enyim.Caching" />
</sectionGroup>
<enyim.com>
<log factory="Enyim.Caching.Log4NetFactory, Enyim.Caching.Log4NetAdapter" />
<memcached protocol="Binary">
<servers>
<add address="127.0.0.1" port="11211" />
<!-- Add new servers here -->
</servers>
<socketPool connectionTimeout="00:00:02" />
</memcached>
</enyim.com>
<强> Hibernate.config 强>
<property name="cache.provider_class">NHibernate.Caches.EnyimMemcached.MemCacheProvider,NHibernate.Caches.EnyimMemcached</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.default_expiration">2419200</property>
所以我们拥有它。所有商品的有效期均为28天,memcached完美无缺。