在net6的官方文档中,如果需要使用redis作为分布式缓存,会建议使用RedisCache AddStackExchangeRedisCache ()来实现 ,根据官方文档内容进行操作后,发生了如下异常
public void Test() { Cache.SetString(Key, "123"); } StackExchange.Redis.RedisServerException: ERR Error running script (call to f_3915ee22fda531a1d5661f2523d0443fd35ff0a4): @user_script:2: @user_script: 2: Wrong number of args calling Redis command From Lua script
看起来是执行脚本时候异常,先检查了一下redis的连接,发现连接没有问题,于是向bing国际版咨询,发现github上有类似的issue
https://github.com/StackExchange/StackExchange.Redis/issues/1904
导致问题的原因是redis server 不同版本的执行脚本有区别,需要升级redis 服务至5.0.x。我使用的版本是redis 3.1.2 可是redis版本升级不是打工仔说升就能升的,只能寻找其他解决方案。
最终,发现使用.net 1.x中redis的解决方案可以适配
使用
<PackageReference Include="Microsoft.Extensions.Caching.Redis" Version="2.2.0" />
代替
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="6.0.0" />