.Net Core redis 调用报错 '6000 Redis requests per hour' 解决 6000 此调用限制

问题描述

redis 是一种基于内存,性能高效的 NoSQL 数据库,性能高主要就体现在数据交互耗时较短,能够段时快速的对用户的请求做出反应,所以在业务比较复杂或交互量需求大时,必然会超过 6000次/h,同时你引用的动态库 ServiceStack.redis.dll 版本在 v4 及以上时,就会出现如下报错:

  The free-quota limit on ‘6000 Redis requests per hour‘ has been reached. Please see https://servicestack.net to upgrade to a commercial license. 

若想突破次数限制,则需要降低 ServiceStack.redis.dll 版本。因为 ServiceStack.Redis.dll 这个官方 Redis 访问组件从 4.0 版本后开始商业化了。v3 的最后一个版本是 v3.9.71。

  

仅升级动态库 ServiceStsck.redis.dll 报错解决('get_Db')

报错详情:'Method 'get_Db' in type 'ServiceStack.Redis.RedisNativeClient' from assembly 'ServiceStack.Redis, Version=3.9.71.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.'

  问题原因:

    主要是因为在高版本中,ServiceStsck.redis.dll 已将对 ServiceStack.Common.dll 和 ServiceStack.Text.dll 的依赖去除,而在老版本中仍然有依赖。

  解决方法:

    因此在版本将至 v3.9.71 后,需要额外引用动态库:ServiceStack.Common.dll、ServiceStack.Text.dll,版本同样选择 v3.9.71

 新旧版本的写法区别

主要就是实例化 RedisClient 时的区别。

1     //新版写法 v4及以后
2     var redisEndpoint = new RedisEndpoint { Host = "", Password = "", Port = Convert.ToInt32("3679"), Db = 0 };
3     using (RedisClient redisClient = new RedisClient(redisEndpoint))
4     {
5         var strlist = redisClient.GetHashValues("hashId");//新老版本语法相同
6         var strlist2 = redisClient.GetValuesFromHash("hashId",new string[] { "key1","key2" });//新老版本语法相同
7     }
1     //旧版写法 v4之前
2     using (RedisClient redisClient = new RedisClient("redishost", Convert.ToInt32("redisport"), "redispass", 0))
3     {
4         var strlist = redisClient.GetHashValues("hashId");//新老版本语法相同
5         var strlist2 = redisClient.GetValuesFromHash("hashId",new string[] { "key1","key2" });//新老版本语法相同
6     }
posted @ 2022-10-14 18:14  橙子家  阅读(820)  评论(0编辑  收藏  举报