Senparc/Senparc.CO2NET

Senparc.CO2NET.Cache.CsRedis bug

zhulj opened this issue · 3 comments

zhulj commented

就不翻译英文了.

Senparc.CO2NET/src/Senparc.CO2NET.Cache.CsRedis/ObjectCacheStrategy/BaseRedisObjectCacheStrategy.cs
行38
Client = new CSRedis.CSRedisClient(Config.SenparcSetting.Cache_Redis_Configuration);
应该用
Client = new CSRedis.CSRedisClient(RedisManager.ConfigurationOption);

否则 Senparc.CO2NET.Cache.CsRedis.Register.SetConfigurationOption(redisConnection);
连接配置无法生效
都是调用空配置

这个修改是不需要的:
第一,Config.SenparcSetting.Cache_Redis_Configuration 在初始化的时候已经从 appsettings.json 里面取值了(除非你没有按照标准初始化)。
第二,看一下这里的静态构造函数 static BaseRedisObjectCacheStrategy(),里面已经有赋值:

RedisManager.ConfigurationOption = Config.SenparcSetting.Cache_Redis_Configuration;

所以正常情况下,即使你用了 RedisManager.ConfigurationOption,值也是和 Config.SenparcSetting.Cache_Redis_Configuration相等的。

感谢交流!

zhulj commented

微信的所有配置都是从DB取值 ,SenparcWeixinSetting 基本上没用到;
缓存从以下配置设置
Senparc.CO2NET.Cache.CsRedis.Register.SetConfigurationOption(redisConnection);
Senparc.CO2NET.Cache.CsRedis.Register.UseKeyValueRedisNow();
+
app.UseSenparcGlobal(env,null,
{
register.UseSenparcWeixinCacheCsRedis();
});
就可以启用
这配置在MP AccessToken/JsapiToken 可以正常使用
可是为于MessageHandler 上下文缓存不能生效

MessageHandler 的缓存也是依赖于整体缓存策略的,所以需要按照 Sample 提供的注册过程,完整注册下来。否则默认就是用内存缓存。