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<T>(key);
if (t == null && func != null)
{
t = func();
redisClient.Set<T>(key, t, DateTime.Now.AddSeconds(seconds));
}
return t;
}
第二点:设置ConnectTimeout属性(猜测单位应该是毫秒),要设置一个比较大的值,我设置为:1000 * 60 * 20 ,没错是20分钟,我发现设置小了还是不管用
做好这两点,经测试发现每秒钟200个并发量 毫无压力
附上封装的一个帮助类:
/// <summary>
/// 数据缓存
/// </summary>
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<T>(string key, int seconds, Func<T> func)
{
using (IRedisClient redisClient = Instance.GetClient())
{
T t = redisClient.Get<T>(key);
if (t == null && func != null)
{
t = func();
redisClient.Set<T>(key, t, DateTime.Now.AddSeconds(seconds));
}
return t;
} }
public static T Get<T>(string key)
{
using (IRedisClient redisClient = Instance.GetReadOnlyClient())
{
T t = redisClient.Get<T>(key);
return t;
} }
public static Boolean Set<T>(string key, int seconds, T t)
{
using (IRedisClient redisClient = Instance.GetClient())
{
return redisClient.Set<T>(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);
}
}
} }
}
Unable to Connect: sPort: 0 C# ServiceStack.Redis 访问 redis的更多相关文章
- Redis的Unable to connect to Redis和java.io.IOException: 远程主机强迫关闭了一个现有的连接问题的解决
学习项目xhr系统用到springboot + vue(https://github.com/lenve/vhr),文档中要求使用到RabbitMQ,但是从我搭建开发环境来看,是否配置Rabbit ...
- Selenium2学习-038-firefox、webdriver版本不对称问题解决:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055
今天有个朋友在群里问,为何脚本运行不通过,其脚本操作步骤简单描述如下: 1.启动火狐浏览器 2.打开百度 3.查询框输入关键字 4.点击按钮[百度一下] 脚本挺简单的,其给出的应用报错信息如下所示: ...
- 解决org.openqa.selenium.WebDriverException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms org.springframework.beans.BeanInstantiation
解决方法为将selenium-server-standalone-2.37.0.jar升级至selenium-server-standalone-2.41.0.jar即可. 下载地址:http://s ...
- WebDriver:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms
今天尝试最新的webDriver与fireFox搭配: 运行代码时出现如下的问题,但是浏览器却可以打开: org.openqa.selenium.firefox.NotConnectedExcepti ...
- [RabbitMQ]Error: unable to connect to node rabbit@compute1: nodedown(CentOS7.0)
今天在搭建OpenStack的时候需要安装RabbitMQ,可是使用yum install rabbitmq-server安装之后,按照OpenStack官方提供的文档修改guest用户密码的时候却出 ...
- selenium 运行之后错误提示Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output
错误提示: org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port ...
- 解决loadrunner录制时 Request Connection: Remote Server @ 0.0.0.0:80 (Service=?) NOT PROXIED! (REASON: Unable to connect to remote server: rc = -1 , le = 0)问题
环境为win7+ie8+loadrunner11,录制脚本回放查看Recoding log 出现如下错误:[Net An. Error ( 7f8:1340)] Request Connecti ...
- 【spring cloud】spring cloud2.X spring boot2.0.4调用feign配置Hystrix Dashboard 和 集成Turbine 【解决:Hystrix仪表盘Unable to connect to Command Metric Stream】【解决:Hystrix仪表盘Loading...】
环境: <java.version>1.8</java.version><spring-boot.version>2.0.4.RELEASE</spring- ...
- selenium 问题:Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms
问题:Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms 原因: selenium-server-standalone-x. ...
- 【err】VIDEOIO ERROR: V4L: index 0 is not correct!Unable to connect to camera
前言 新到手一块板子,程序编译成功之后,运行出现错误,不能连接到摄像头. 问题 VIDEOIO ERROR: V4L: index is not correct! Unable to connect ...
随机推荐
- d2js + activiti 备忘
很久没玩 activiti 了再摸起来都有点陌生了,梳理了一下要点如下: 1. d2js 作为业务端发起流程. d2js.exports.vocationRequest = d2js.vocation ...
- 【服务器安全问题】双防火墙有什么意义?SSH暴力破解如何防范
发现我的服务器有大量的陌生IP尝试SSH登录,似乎想暴力破解. 我个人习惯是服务器提供商开放了所有端口的,同时也没有开启运维软件提供的防火墙emm 这倒是让我想到了 一般服务器提供商(比如阿里云.华为 ...
- tar 分卷压缩和解压缩
示例将 jdk1.8.0_221 文件夹按 98m 进行分卷压缩和解压缩压缩: tar -czvf - jdk1.8.0_221/ |split -b 98m - jdk1.8.0_221.tar.g ...
- springboot 2.x 集成quartz持久化到一个单独的dataSource时遇到的坑
由于希望可以在集群环境中运行定时job,但考虑到多个job实例有可能带来job重复执行的问题,新项目的job打算从原生的spring task实现改成quartz job实现,并采用jdbc的存储方式 ...
- Qt/C++音视频开发50-不同ffmpeg版本之间的差异处理
一.前言 ffmpeg的版本众多,从2010年开始计算的项目的话,基本上还在使用的有ffmpeg2/3/4/5/6,最近几年版本彪的比较厉害,直接4/5/6,大版本之间接口有一些变化,特别是一些废弃接 ...
- 微信团队分享:来看看微信十年前的IM消息收发架构,你做到了吗
本文由微信技术团队分享,原题"十年前的微信消息收发架构长啥样?",下文进行了排版和内容优化等. 1.引言 2023 年,微信及 WeChat 的 DAU(月活用户)达到 13.4 ...
- 即时通讯技术文集(第13期):Web端即时通讯技术精华合集 [共15篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第13 期. [- 1 -] 新手入门贴:史上最全Web端即时通讯技术原理详解 [链接] http ...
- C#/.NET/.NET Core技术前沿周刊 | 第 19 期(2024年12.23-12.29)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 新一代python版本与依赖管理工具 uv
uv python版本与依赖管理 选择原因 1. 新的好玩.rust开发的执行速度快 2. 确实方便 3. 轻,软件就十几二十兆,占磁盘小 4. uv.lock可以锁版本 场景应用 场景一 从 ana ...
- 给DevOps加点料:融入安全性的DevSecOps
从前,安全防护只是特定团队的责任,在开发的最后阶段才会介入.当开发周期长达数月.甚至数年时,这样做没什么问题:但是现在,这种做法现在已经行不通了.采用 DevOps 可以有效推进快速频繁的开发周期(有 ...