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 ...
随机推荐
- java -jar命令运行jar包时指定外部依赖jar包
你们都知道一个java应用项目能够打包成一个jar,固然你必须指定一个拥有main函数的main class做为你这个jar包的程序入口.具体的方法是修改jar包内目录META-INF下的MANIFE ...
- 报错test_features2d.cpp:51:10: fatal error: features2d/test/test_detectors_regression.impl.hpp: 没有那个文件
问题描述: ubuntu18.04安装opencv4.5.1+contrib 报错test_features2d.cpp:51:10: fatal error: features2d/test/tes ...
- Windows7下关闭和打开IPV6隧道
IPv6隧道是将IPv6报文封装在IPv4报文中,让IPv6数据包穿过IPv4网络进行通信.对于采用隧道技术的设备来说,在隧道的入口处,将IPv6的数据报封装进IPv4,IPv4报文的源地址和目的地址 ...
- CDS标准视图:催款代码描述 I_DunningKeyText
视图名称:催款代码描述 I_DunningKeyText 视图类型: 视图代码: 点击查看代码 @EndUserText.label: 'Dunning Key - Text' @Analytics. ...
- 防止SQL注入的五种方法
1.首先看一下下面两个sql语句的区别: <select id="selectByNameAndPassword" parameterType="java.util ...
- nginx里面的路径定位关键词root、alias
nginx里面的路径定位关键词root.alias是有区别的: 设置请求资源的目录root / alias root:设置请求的根目录 语法 root path; 默认值 root html; 位置 ...
- [rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(04):实现窗口主题(颜色)变换(暨menu菜单的使用)
前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发. iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动. 本合集是基于新版本的关于分 ...
- layui table表格单元格动态合并,并设置隔行变色
layui table表格单元格动态合并,并设置隔行变色,此代码只针对嵌套数组只有一层的时候有效,多个数组嵌套还在冥想当中!! 需求描述 我们知道在layui插件官方平台有个可以无限极单元格合并的模块 ...
- 富数-AnonymFL
本文学习文章"2022 WAIC|「全匿踪联邦学习」AnonymFL正式发布:破解用户ID暴露难题,实现真正合规可信的隐私计算",记录笔记. 引言 2022年08月26日,富数科技 ...
- Linux基础:用户与用户组