【发布时间】:2016-05-19 23:47:25
【问题描述】:
问题
似乎认为无论我们将 memcached 配置为使用什么值作为过期时间,缓存中的所有项目的过期时间都是 5 分钟。
我们的尝试
- 使用 0 的过期时间,所有文档都表明这意味着项目永远不会过期。
- 使用 600 秒的过期时间。
- 使用未来几个小时后的 Unix 时间戳(例如 1455058122)。
在所有情况下,当一个项目被缓存并且我检索缓存转储时,到期时间戳只是未来 5 分钟。
这非常令人沮丧,因为除了这个主要缺陷之外,memcached 的效果非常好。
设置
- .NET 3.5
- Visual Studio 2015
- NHibernate 3.1.0.4000
- EnyimCached 2.3.0.0
- Memcached 1.4.5_4_gaa7839e
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>
休眠配置
<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
【问题讨论】:
标签: .net nhibernate memcached