首页 技术交流 运用盛派微信SDK开启redis缓存遇到的问题 正文

运用盛派微信SDK开启redis缓存遇到的问题

发布日期:2019年10月19日 13:59        阅读次数:2134

由于公司的项目集成了盛派微信SDK,SDK可以在你运用的项目中通过NuGet包来安装,根据需要安装你需要的SDK即可。一般来说安装的如下图所示:

         

然后在你的项目中,如果是.net Framework版本,在global文件的Application_Start进行一些配置:

#region CO2NET缓存,微信配置 全局注册
            /*CO2NET 全局注册开始
                * 建议按照以下顺序进行注册
                 */

            //设置全局 Debug 状态
            var isGLobalDebug = true;
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);

            //CO2NET 全局注册,必须!!
            IRegisterService register = RegisterService.Start(senparcSetting).UseSenparcGlobal(false, null);

            //缓存配置
            #region 配置和使用 Redis          -- DPBMARK Redis

            //配置全局使用Redis缓存(按需,独立)
            var redisConfigurationStr = senparcSetting.Cache_Redis_Configuration;
            var useRedis = !string.IsNullOrEmpty(redisConfigurationStr) && redisConfigurationStr != "Redis配置";
            if (useRedis)//这里为了方便不同环境的开发者进行配置,做成了判断的方式,实际开发环境一般是确定的,这里的if条件可以忽略
            {
                /* 说明:
                 * 1、Redis 的连接字符串信息会从 Config.SenparcSetting.Cache_Redis_Configuration 自动获取并注册,如不需要修改,下方方法可以忽略
                /* 2、如需手动修改,可以通过下方 SetConfigurationOption 方法手动设置 Redis 链接信息(仅修改配置,不立即启用)
                 */
                Senparc.CO2NET.Cache.Redis.Register.SetConfigurationOption(redisConfigurationStr);

                //以下会立即将全局缓存设置为 Redis
                //Senparc.CO2NET.Cache.Redis.Register.UseKeyValueRedisNow();//键值对缓存策略(推荐)


                //Senparc.CO2NET.Cache.Redis.Register.UseHashRedisNow();//HashSet储存格式的缓存策略

                //也可以通过以下方式自定义当前需要启用的缓存策略
                //CacheStrategyFactory.RegisterObjectCacheStrategy(() => RedisObjectCacheStrategy.Instance);//键值对
                //CacheStrategyFactory.RegisterObjectCacheStrategy(() => RedisHashSetObjectCacheStrategy.Instance);//HashSet
            }
            //如果这里不进行Redis缓存启用,则目前还是默认使用内存缓存 

            #endregion                        // DPBMARK_END

            /* 微信配置开始
             * 建议按照以下顺序进行注册
             */

            //设置微信 Debug 状态
            var isWeixinDebug = true;
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);
            //AccessTokenContainer.Register(Senparc.Weixin.Config.SenparcWeixinSetting.WeixinAppId, Senparc.Weixin.Config.SenparcWeixinSetting.Component_Appid);
            //微信全局注册,必须!!
            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting)
                 .RegisterMpAccount(senparcWeixinSetting, "【日本村外教最日语】公众号");
            #endregion

 以上是最原始版本,后来公司服务器做了负载均衡,上诉代码的缓存机制是存放服务器本地的,这就导致缓存在各个服务器之间乱了,所以就需要开启分布式缓存,这里我们开启的是redis缓存机制。

 Senparc.CO2NET.Cache.Redis.Register.UseKeyValueRedisNow();//键值对缓存策略(推荐)

将这句代码加上后,系统报出异常,提示StackExchange.Redis版本不对,于是乎我升级了项目的redis版本,然后版本问题成功解决了,又爆出了没有开启注册缓存机制:

当前扩展缓存策略没有进行注册:Senparc.Weixin.Cache.ContainerCacheStrategyDoma 异常原因:https://weixin.senparc.com/QA-551/

于是乎,百度了很久,当然提示提示也给了一个链接,进去之后对比了代码,也没发现漏写了什么。最终的最终,发现是因为在NuGet少安装了一个类库,


需要安装盛派SDK的redis类库,而且Wexin.MP类库也需要更新到最新,当然所有sengparc的类库都更新为最新最好。如此再调试将缓存机制立即应用为redis就不会出问题了。

评论:

共 0 页 0 条记录,当前为第 1 页