<?xml version="1.0"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> <sectionGroup name="enyim.com"> <section name="memcached" type="Enyim.Caching.Configuration.MemcachedClientSection, Enyim.Caching"/> </sectionGroup> </configSections> <enyim.com> <memcached> <servers> <!-- put your own server(s) here--> <add address="localhost" port="11211" /> </servers> <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:00:10" deadTimeout="00:02:00" /> </memcached> </enyim.com> <log4net> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" /> </layout> </appender> <root> <level value="Debug" /> <appender-ref ref="ConsoleAppender" /> </root> </log4net> <!--<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup>--> </configuration>
static void Main(string[] args) { testEnyimCaching(); Console.ReadLine(); } static void testEnyimCaching() { MemcachedClient client = new MemcachedClient("enyim.com/memcached"); //存值 --不带过期时间的存储,Memcached将根据LRU来决定过期策略 bool result = client.Store(Enyim.Caching.Memcached.StoreMode.Add, "name", "dinglang"); //带过期时间的缓存 //bool success = client.Store(StoreMode.Add, person.UserName, person, DateTime.Now.AddMinutes(10)); if (result) { Console.WriteLine("成功存入缓存"); //取值 object name = client.Get("name"); if (name != null) { Console.WriteLine("取出的值为:" + name); } else { Console.WriteLine("取值失败"); } } else { Console.WriteLine("存入缓存失败"); } }
为什么一直写入不成功?? 上面红色的部分就是写入缓存的代码
app.config中用enyim.com的配置吗?
App.config里的配置就是上面贴出出来的
贴错了 重新上传了
@koi: 你贴出来的是log4net的配置,不是enyim.com的
@dudu: 重新上传了
@koi: telnet localhost 11211测试一下
@dudu: 可以的
@koi:
@koi:
试试直接 var client = new MemcachedClient();
@dudu: 写入失败
@koi: 在配置中把<memcached>改为<memcached protocol="Binary">试试
@dudu: 还不不行
@dudu: 把StoreMode.Add改为StoreMode.Set试试
@dudu: bool result = client.Store(Enyim.Caching.Memcached.StoreMode.Set, "nqqame", "dinglang"); 执行到这里的时候会有小停顿几秒 然后返回false
@koi: 建议再查一下,可能是某些低级问题引起的
@dudu: 已经是我全部代码了
还有个packages。config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EnyimMemcached" version="2.12" targetFramework="net45" />
</packages>
dll是我从nuget上下载来的
@koi: 我们也是这么使用的,建议确认一下app.config中的配置是否起作用了
@dudu: 换成 <memcached protocol="Text"> 就ok了,但是换成Binary就会有问题
@逍遥岛王: 我们一直用的是Binary
我也遇到了同样的问题,store那个地方停顿了几秒
找到问题了,<memcached> 换成 <memcached protocol="Text"> 就ok了,但是换成Binary就会有问题,好像是验证模式的问题,正在研究中
我也遇到同样的问题? 为什么网上什么都没有加,自己配 加protocol="Text">的