redis使用总结:

redis官网:https://redis.io/

经典博客:https://blog.csdn.net/qq_40693171/article/details/97437427

springboot整合spring Cache(redis):https://blog.csdn.net/qq_40693171/article/details/99676253

Springboot整合redis(lettuce):https://blog.csdn.net/qq_40693171/article/details/84948300

Redis集群的安装(Redis3+CentOS):https://blog.csdn.net/dataiyangu/article/details/88738249

jedis使用:https://www.cnblogs.com/tengfly/p/9307373.html

Redis随笔(五)Jedis、jedisCluster的使用https://www.cnblogs.com/c-xiaohai/p/8376364.html

Jedis源码分析https://segmentfault.com/a/1190000015445973

RedisTemplate Api总结:https://www.jianshu.com/p/19e851a3edba

redisTemplate详解:https://blog.csdn.net/zrqsyh/article/details/89491476

SpringBoot系列教程之RedisTemplate 基本配置说明文档:https://www.ucloud.cn/yun/37042.html

jedis连接池配置详解jedisPoolConfighttps://www.cnblogs.com/forward22222/p/9601820.html

JedisPoolConfig config = new JedisPoolConfig();

//连接耗尽时是否阻塞, 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(10);

//最大连接数, 默认8个

config.setMaxTotal(50);

//获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1

config.setMaxWaitMillis(30000);

//资源池中资源最小空闲时间(单位为毫秒),达到此值后空闲资源将被移除  默认1800000毫秒(30分钟)

config.setMinEvictableIdleTimeMillis(60000);

//最小空闲连接数, 默认0

config.setMinIdle(0);

//每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3

config.setNumTestsPerEvictionRun(3);

//对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断  (默认逐出策略)

config.setSoftMinEvictableIdleTimeMillis(1800000);

//在获取连接的时候检查有效性, 默认false

config.setTestOnBorrow(false);

//是否开启空闲资源监测, 默认false

config.setTestWhileIdle(true);

//空闲资源的检测周期(单位为毫秒) 如果为负数,则不运行逐出线程, 默认-1

config.setTimeBetweenEvictionRunsMillis(-1);

配置最佳实践:https://note.youdao.com/ynoteshare1/index.html?id=09351fa87c587795c637c2d155f43f7b&type=note

连接池所有配置参考


参数 说明 默认 推荐
maxTotal 最大存在对象数 8  
maxIdle 最大空闲对象数 8 等于maxTotal
minIdle 最小空闲对象数 0 高并发下推荐等于maxTotal
testOnCreate 创建新对象时测试可用 false true
testOnBorrow 获取对象时测试可用 false false
testOnReturn 归还对象时测试可用 false false
testWhileIdle 闲置对象管理时测试可用 false true
timeBetweenEvictionRunsMillis 闲置对象管理任务间隔 -1(不开启) 60000(小于服务端自动关闭连接时间)
numTestsPerEvictionRun 每次检测的闲置对象数 3 -1(全部闲置对象)
minEvictableIdleTimeMillis 连接空闲的最小时间,达到此值后空闲连接将可能会被移除 30min -1
softMinEvictableIdleTimeMillis 同上,但保留minIdle个连接,同时配置会被覆盖,建议配这个 30min 30min
  • 不常用配置
GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();

//对象被长时间获取,没有返还,当成忘记返还, 销毁该对象
AbandonedConfig abandonedConfig=new AbandonedConfig();
abandonedConfig.setLogAbandoned(true);
abandonedConfig.setUseUsageTracking(false);
abandonedConfig.setRemoveAbandonedOnBorrow(true);
abandonedConfig.setRemoveAbandonedOnMaintenance(true);
abandonedConfig.setRemoveAbandonedTimeout(20);

//启用jmx之后可以实时的查看线程池对象的状态
poolConfig.setJmxEnabled(false);
poolConfig.setJmxNameBase("namebase");
poolConfig.setJmxNamePrefix("nameprefix");

Redis多数据库


  • Redis默认有[0-15]个可选db, 不同DB中的Key可以重复, 通过select指令选择
  • 推荐使用多实例代替多库
    • 不同库的命令仍然是串行
    • 不同库的数据存储仍是在一个文件中, 数据迁移很慢
    • Redis Cluster只支持db=0
  • spring-data-redis<1.8.11版本中, 每次获取连接和还回连接都会将db重置为0

Markdown

发布了136 篇原创文章 · 获赞 65 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/jakeswang/article/details/103880692