zoukankan      html  css  js  c++  java
  • Memcached 使用备注

     

    ICSharpCode.SharpZipLib未能加载文件或程序集

    Memcached使用的是0.84版本的dll,vs2013带的是0.86版本

    在web.config中<runtime><assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">节加入以下节点

          <dependentAssembly>
            <assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1B03E6ACF1164F73" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-0.86.0.518" newVersion="0.86.0.518" />
          </dependentAssembly>

    未标记为可序列化。

    为所有要缓存的对象加可序列化属性太麻烦,需要对进行再次封装

            /// <summary>
            /// 向缓存服务器写入数据
            /// </summary>
            /// <param name="key">key</param>
            /// <param name="value">数据</param>
            /// <param name="seconds">缓存时间 </param>
            /// <returns></returns>
            public static bool SetData(string key, object value, int seconds)
            {
                string jsonString = JsonConvert.SerializeObject(value);
                return MemcacheHelper.Set(key, jsonString, DateTime.Now.AddSeconds(seconds));
            }
    
            /// <summary>
            /// 从服务器读取数据
            /// </summary>
            /// <typeparam name="T">类型</typeparam>
            /// <param name="key">key</param>
            /// <returns></returns>
            public static T GetData<T>(string key)
            {
                object obj = MemcacheHelper.Get(key);
                if (obj == null)
                    return default(T);
                return JsonConvert.DeserializeObject<T>(obj.ToString());
            }

     使用上面的方法可能会导致复杂的集合类无法反序列化成功,报Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type .....错误

    尝试将写入方法改为

            /// <summary>
            /// 向缓存服务器写入数据
            /// </summary>
            /// <param name="key">key</param>
            /// <param name="value">数据</param>
            /// <param name="seconds">缓存时间 </param>
            /// <returns></returns>
            public static bool SetData<T>(string key, T value, int seconds)
            {
                if (value == null)
                    return false;
                string jsonString = JsonConvert.SerializeObject(value);
                return MemcacheHelper.Set(key, jsonString, DateTime.Now.AddSeconds(seconds));
            }

    反序列化失败是偶尔出现,以待后测

  • 相关阅读:
    疯狂Java讲义-Java基础类库
    第十一届软件类校内模拟赛本科组Java软件开发
    疯狂Java讲义
    疯狂Java讲义-面向对象(下)
    疯狂Java讲义-面向对象(上)
    疯狂Java讲义-流程控制与数组
    疯狂Java讲义-数据类型和运算符
    数据结构-图和图遍历(DFS、BFS)
    A1034 Head of a Gang (30分)
    A1098 Insertion or Heap Sort (25分)
  • 原文地址:https://www.cnblogs.com/Celebrator/p/6763101.html
Copyright © 2011-2022 走看看