- 浏览: 623375 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (819)
- java开发 (110)
- 数据库 (56)
- javascript (30)
- 生活、哲理 (17)
- jquery (36)
- 杂谈 (15)
- linux (62)
- spring (52)
- kafka (11)
- http协议 (22)
- 架构 (18)
- ZooKeeper (18)
- eclipse (13)
- ngork (2)
- dubbo框架 (6)
- Mybatis (9)
- 缓存 (28)
- maven (20)
- MongoDB (3)
- 设计模式 (3)
- shiro (10)
- taokeeper (1)
- 锁和多线程 (3)
- Tomcat7集群 (12)
- Nginx (34)
- nodejs (1)
- MDC (1)
- Netty (7)
- solr (15)
- JSON (8)
- rabbitmq (32)
- disconf (7)
- PowerDesigne (0)
- Spring Boot (31)
- 日志系统 (6)
- erlang (2)
- Swagger (3)
- 测试工具 (3)
- docker (17)
- ELK (2)
- TCC分布式事务 (2)
- marathon (12)
- phpMyAdmin (12)
- git (3)
- Atomix (1)
- Calico (1)
- Lua (7)
- 泛解析 (2)
- OpenResty (2)
- spring mvc (19)
- 前端 (3)
- spring cloud (15)
- Netflix (1)
- zipkin (3)
- JVM 内存模型 (5)
- websocket (1)
- Eureka (4)
- apollo (2)
- idea (2)
- go (1)
- 业务 (0)
- idea开发工具 (1)
最新评论
-
sichunli_030:
对于频繁调用的话,建议采用连接池机制
配置TOMCAT及httpClient的keepalive以高效利用长连接 -
11想念99不见:
你好,我看不太懂。假如我的项目中会频繁调用rest接口,是要用 ...
配置TOMCAT及httpClient的keepalive以高效利用长连接
项目中使用了jedis-2.1.0.jar,现在升级为jedis-2.6.0,在初始化资源池时,总是报如下错误。
private JedisPool pool = new JedisPool(config, host, port, timeout, null, dbIndex); //这句报错。
原因是因为:在2.6.0版本中,JedisPool缺少对应参数的构造函数,所以报上述错误,代码如下
ommons-pool2-2.2.jar、jedis-2.6.0 都引入项目中了。
private static void initialPool()
{
ResourceBundle rb = ResourceBundle.getBundle("init");
// 数据库,默认为0,目前总共为16个库
// 读取配置文件中的数据库,默认为0,目前总共为16个库
int dbIndex = Integer.parseInt(rb.getString("redis.dbindex"));
// 读取配置文件中的IP地址
String host = rb.getString("redis.host");
// 读取配置文件中的端口号
int port = Integer.parseInt(rb.getString("redis.port"));
// 读取配置文件中的超时时间
int timeout = Integer.parseInt(rb.getString("redis.timeout"));
// 最大分配的对象数
int maxActive = Integer.parseInt(rb.getString("redis.maxActive"));
// 最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制
int maxIdle = Integer.parseInt(rb.getString("redis.maxIdle"));
// 当池内没有返回对象时,最大等待时间
int maxWait = Integer.parseInt(rb.getString("redis.maxWait"));
// 当调用borrow Object方法时,是否进行有效性检查
String testOnBorrow = rb.getString("redis.testOnBorrow");
boolean onBorrow = false;
if (testOnBorrow.equals("true"))
{
onBorrow = true;
}
org.apache.commons.pool2.impl.GenericObjectPoolConfig config = new org.apache.commons.pool2.impl.GenericObjectPoolConfig ();
//连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
config.setBlockWhenExhausted(true);
//设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");
//是否启用pool的jmx管理功能, 默认true
config.setJmxEnabled(true);
//MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默认为"pool", JMX不熟,具体不知道是干啥的...默认就好.
config.setJmxNamePrefix("pool");
//是否启用后进先出, 默认true
config.setLifo(true);
//最大空闲连接数, 默认8个
config.setMaxIdle(maxIdle);
//最大连接数, 默认8个
config.setMaxTotal(maxActive);
//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
config.setMaxWaitMillis(maxWait);
//逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
config.setMinEvictableIdleTimeMillis(1800000);
//最小空闲连接数, 默认0
config.setMinIdle(0);
//每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
config.setNumTestsPerEvictionRun(3);
//对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 (默认逐出策略)
config.setSoftMinEvictableIdleTimeMillis(1800000);
//在获取连接的时候检查有效性, 默认false
config.setTestOnBorrow(false);
//在空闲时检查有效性, 默认false
config.setTestWhileIdle(false);
//逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
config.setTimeBetweenEvictionRunsMillis(-1);
private JedisPool pool = new JedisPool(config, host, port, timeout, null, dbIndex);
}
Caused by: java.lang.NoSuchMethodError: redis.clients.jedis.JedisPool.<init>(Lorg/apache/commons/pool2/impl/GenericObjectPoolConfig;Ljava/lang/String;IILjava/lang/String;I)V
at com.zk.common.util.Redis.initialPool(Redis.java:126)
at com.zk.common.util.Redis.getJedis(Redis.java:162)
at com.zk.common.util.Redis.lrange(Redis.java:813)
at com.zk.adms.router.AdmsDataRouter.polling(AdmsDataRouter.java:192)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264)
... 3 more
参考:http://bbs.csdn.net/topics/390887579
private JedisPool pool = new JedisPool(config, host, port, timeout, null, dbIndex); //这句报错。
引用
Caused by: java.lang.NoSuchMethodError: redis.clients.jedis.JedisPool.<init>(Lorg/apache/commons/pool/impl/GenericObjectPool$Config;Ljava/lang/String;IILjava/lang/String;)V
原因是因为:在2.6.0版本中,JedisPool缺少对应参数的构造函数,所以报上述错误,代码如下
jedisPool = new JedisPool(getPoolConfig(), redisServerHost, redisServerPort, timeout, redisAuthKey);
ommons-pool2-2.2.jar、jedis-2.6.0 都引入项目中了。
private static void initialPool()
{
ResourceBundle rb = ResourceBundle.getBundle("init");
// 数据库,默认为0,目前总共为16个库
// 读取配置文件中的数据库,默认为0,目前总共为16个库
int dbIndex = Integer.parseInt(rb.getString("redis.dbindex"));
// 读取配置文件中的IP地址
String host = rb.getString("redis.host");
// 读取配置文件中的端口号
int port = Integer.parseInt(rb.getString("redis.port"));
// 读取配置文件中的超时时间
int timeout = Integer.parseInt(rb.getString("redis.timeout"));
// 最大分配的对象数
int maxActive = Integer.parseInt(rb.getString("redis.maxActive"));
// 最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制
int maxIdle = Integer.parseInt(rb.getString("redis.maxIdle"));
// 当池内没有返回对象时,最大等待时间
int maxWait = Integer.parseInt(rb.getString("redis.maxWait"));
// 当调用borrow Object方法时,是否进行有效性检查
String testOnBorrow = rb.getString("redis.testOnBorrow");
boolean onBorrow = false;
if (testOnBorrow.equals("true"))
{
onBorrow = true;
}
org.apache.commons.pool2.impl.GenericObjectPoolConfig config = new org.apache.commons.pool2.impl.GenericObjectPoolConfig ();
//连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
config.setBlockWhenExhausted(true);
//设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)
config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");
//是否启用pool的jmx管理功能, 默认true
config.setJmxEnabled(true);
//MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默认为"pool", JMX不熟,具体不知道是干啥的...默认就好.
config.setJmxNamePrefix("pool");
//是否启用后进先出, 默认true
config.setLifo(true);
//最大空闲连接数, 默认8个
config.setMaxIdle(maxIdle);
//最大连接数, 默认8个
config.setMaxTotal(maxActive);
//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间, 默认-1
config.setMaxWaitMillis(maxWait);
//逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
config.setMinEvictableIdleTimeMillis(1800000);
//最小空闲连接数, 默认0
config.setMinIdle(0);
//每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
config.setNumTestsPerEvictionRun(3);
//对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 (默认逐出策略)
config.setSoftMinEvictableIdleTimeMillis(1800000);
//在获取连接的时候检查有效性, 默认false
config.setTestOnBorrow(false);
//在空闲时检查有效性, 默认false
config.setTestWhileIdle(false);
//逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
config.setTimeBetweenEvictionRunsMillis(-1);
private JedisPool pool = new JedisPool(config, host, port, timeout, null, dbIndex);
}
Caused by: java.lang.NoSuchMethodError: redis.clients.jedis.JedisPool.<init>(Lorg/apache/commons/pool2/impl/GenericObjectPoolConfig;Ljava/lang/String;IILjava/lang/String;I)V
at com.zk.common.util.Redis.initialPool(Redis.java:126)
at com.zk.common.util.Redis.getJedis(Redis.java:162)
at com.zk.common.util.Redis.lrange(Redis.java:813)
at com.zk.adms.router.AdmsDataRouter.polling(AdmsDataRouter.java:192)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:273)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:264)
... 3 more
参考:http://bbs.csdn.net/topics/390887579
发表评论
-
缓存穿透、缓存击穿、缓存雪崩区别和解决方案
2022-03-28 00:07 186缓存穿透、缓存击穿、缓存雪崩区别和解决方案 缓存穿透,缓存 ... -
SpringBoot系列教程之Redis集群环境配置
2022-02-28 00:37 249SpringBoot系列教程之Redis集群环境配置 Co ... -
Redis 分布式锁的实现
2021-05-23 18:53 266Redisson实现分布式锁(1)---原理 https:// ... -
Redis面试题
2021-05-23 16:30 296redis布隆过滤器的使用 布隆过滤器可以看成是一个不是很准确 ... -
Redis性能问题排查解决手册
2019-08-07 10:31 399Redis性能问题排查解决手册(七) https://www. ... -
linux下安装redis及其中遇到的问题的解决方法
2017-11-29 16:46 525https://www.cnblogs.com/wyy123/ ... -
Redis scan命令的一次坑
2017-11-16 12:07 1101http://www.jianshu.com/p/d9f0a5 ... -
redis命中率计算
2017-09-29 21:29 1627redis提供了INFO这个命令,能够随时监控服务器的状态,只 ... -
redis分片
2017-07-10 18:41 477http://www.cnblogs.com/liucongl ... -
Redis_conf配置文件说明
2017-05-22 13:58 462Redis_conf配置文件说明 http://blog.cs ... -
redis 数据持久化
2017-05-22 10:16 6381、快照(snapshots) 缺省情况情况下,Redi ... -
overcommit_memory
2017-05-17 09:29 561/etc/sysctl.conf ... -
批量删除Redis数据库中的Key
2017-05-16 10:58 458Redis 中有删除单个 Key 的指令 DEL,但好像没有批 ... -
redis配置认证密码
2017-04-14 19:34 496http://blog.csdn.net/zyz5119197 ... -
redis-cluster研究和使用
2016-12-16 10:09 434参考:http://hot66hot.iteye.com/bl ... -
Redis 3.2.1集群搭建
2016-10-27 10:25 428http://www.cnblogs.com/yuanerme ... -
redis-cli 如何重写服务器的主机名和端口
2016-08-17 16:08 1192windows 环境下,启动多个redis服务,使用不同的端口 ... -
《Redis官方文档》用Redis构建分布式锁
2016-08-08 13:37 681redis深度讲解 http://edu.csdn.net/c ... -
Jedis returnResource使用注意事项
2016-08-07 12:50 1673http://my.oschina.net/zhuguowei ... -
Redis学习笔记7--Redis管道(pipeline)
2016-08-07 12:50 386Redis的Java客户端Jedis的八种调用方式(事务、管道 ...
相关推荐
编写basedao的时候报错:java.lang.Class cannot be cast to java.lang.reflect.Parameterized
在Java编程中,`java.lang.NoSuchMethodError`异常是一个运行时异常,通常发生在程序试图执行一个不存在的方法时。这个异常的出现通常意味着编译时和运行时的类版本不匹配,或者是在编译期间存在而运行时不存在的...
java.lang.NoSuchMethodError: redis.clients.jedis.ScanResult.getStringCursor()Ljava/lang/String; at org.crazycake.shiro.WorkAloneRedisManager.keys(WorkAloneRedisManager.java:149) at org.crazycake....
解决报错_org.springframework.data.redis.serializer.SerializationException_ Could not write_read JSON
标签:springframework、data、spring、redis、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和...
官方离线安装包,亲测可用
在这个"redis-2.1.0"版本中,我们可以探讨如何通过Java进行Redis的集成和基础操作。 首先,`commons-pool-1.5.6`是一个Apache开源项目,提供了对象池化的服务,可以用于管理数据库连接池或其他资源池。在Redis的...
到此这篇关于Linux bash:./xxx:无法执行二进制文件报错的文章就介绍到这了,更多相关Linux 无法执行二进制文件 内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!...
redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-5.0.5.redis-...
1. 前言 在使用redis集群时,发现过期key始终监听不到。网上也没有现成的解决方案。于是想,既然不能监听集群,那我可以建立多个redis连接,分别对每个redis的key过期进行监听。...redis.host3: 10.113.56.6
Exception in thread http-nio-8080-exec-1027 java.lang.OutOfMemoryError: Java heap space Exception in thread http-nio-8080-exec-1031 java.lang.OutOfMemoryError: Java heap space 看线程名称应该是tomcat的...
最近因为CVE-2024-31449漏洞,Redis Lua脚本功能存在缓冲区溢出漏洞,需要升级redis, 提供redis 6.2.16 x86版本已编译好的版本,可以不需编译直接使用
spring boot —— redis 缓存注解使用教程 示例项目地址: 依赖 在pom文件添加如下依赖 <groupId>org.springframework.boot <artifactId>spring-boot-starter-data-redis ...spring.redis.pool.max-idle: 8
8. **主从复制**:在高可用性环境中,Redis通常会配置为主从模式。ServiceStack.Redis支持主从切换,确保即使主节点故障,服务仍能继续运行。 9. **Lua脚本支持**:Redis支持在服务器端执行Lua脚本,ServiceStack....
标签:springframework、data、spring、redis、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...
赠送jar包:spring-session-data-redis-2.0.4....标签:springframework、session、spring、data、redis、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文
官方离线安装包,亲测可用
4. 启动 Redis 服务:打开 cmd 窗口,切换到 C:\redis 目录下,运行 redis-server.exe redis.windows.conf 命令启动 Redis 服务。 5. 访问 Redis 服务:打开另一个 cmd 窗口,切换到 redis 目录下,运行 redis-cli....
通过`Properties`对象(从`redis.properties`加载)配置它,以便获取服务器信息。 ```xml <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> ...