欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > c# >内容正文

c#

unable to connect: sport: 0 c# servicestack.redis 访问 redis -ag凯发k8国际

发布时间:2024/10/12 c# 24 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 unable to connect: sport: 0 c# servicestack.redis 访问 redis 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

需求:  对数据库中的不断抓取的文章进行缓存,因此需要定时访问数据,写入缓存中

在捕获到的异常日志发现错误:unable to connect: sport: 0 

使用的访问方式是线程池的方式:pooledredisclientmanager

经过测试发现在并发访问redis服务的情况下出现该异常的概率比较高,

解决方法

第一点:要使用using(据说访问效率在高并发的时候会有影响,简单的测试过了确实是这样,不过现在的业务达不到高并发量,速度还是很快滴)

using (iredisclient redisclient = instance.getclient()){t t = redisclient.get(key);if (t == null && func != null){t = func();redisclient.set(key, t, datetime.now.addseconds(seconds));}return t;}  

第二点:设置connecttimeout属性(猜测单位应该是毫秒),要设置一个比较大的值,我设置为:1000 * 60 * 20  ,没错是20分钟,我发现设置小了还是不管用

做好这两点,经测试发现每秒钟200个并发量 毫无压力

附上封装的一个帮助类:

/// /// 数据缓存/// public class redishelper{public static pooledredisclientmanager instance;static redishelper(){}public static pooledredisclientmanager instance{get{return instance;}}public static void initclient(string redis_ip, int redis_port, string redis_pass){instance = new pooledredisclientmanager(10000,10,new string[] { string.format("{0}@{1}:{2}", redis_pass, redis_ip, redis_port) }){connecttimeout = 1000 * 60 * 20};}public static t get(string key, int seconds, func func){using (iredisclient redisclient = instance.getclient()){t t = redisclient.get(key);if (t == null && func != null){t = func();redisclient.set(key, t, datetime.now.addseconds(seconds));}return t;}}public static t get(string key){using (iredisclient redisclient = instance.getreadonlyclient()){t t = redisclient.get(key);return t;}}public static boolean set(string key, int seconds, t t){using (iredisclient redisclient = instance.getclient()){return redisclient.set(key, t, datetime.now.addseconds(seconds));}}public static void clearkey(string key){using (iredisclient redisclient = instance.getclient()){ienumerable<string> keys = redisclient.getallkeys(); ;foreach (var item in keys){if (item.contains(key)){redisclient.remove(item);}}}}}

 

转载于:https://www.cnblogs.com/kongkonglonglong/p/7449175.html

总结

以上是ag凯发k8国际为你收集整理的unable to connect: sport: 0 c# servicestack.redis 访问 redis的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

网站地图