当前位置: 首页 > news >正文

苏州网站建设服务公司郑州定制网站推广工具

苏州网站建设服务公司,郑州定制网站推广工具,徐州百度搜索优化,两个网站共用一个空间一 lettuce使用问题 1 问题描述 Redis Cluster集群#xff0c;当master宕机#xff0c;主从切换#xff0c;客户端报错 timed out 2 原因 SpringBoot2.X版本开始Redis默认的连接池都是采用的Lettuce。当节点发生改变后#xff0c;Letture默认是不会刷新节点拓扑的。 3…一 lettuce使用问题 1 问题描述 Redis Cluster集群当master宕机主从切换客户端报错 timed out 2 原因 SpringBoot2.X版本开始Redis默认的连接池都是采用的Lettuce。当节点发生改变后Letture默认是不会刷新节点拓扑的。 3 解决方案 3.1 方案一把lettuce换成jedis 推荐版本jedis 2.9 只需要在pom.xml里调整一下依赖的引用 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactIdversion2.1.5.RELEASE/version!-- 不用lettuce ,用jedis --exclusionsexclusiongroupIdio.lettuce/groupIdartifactIdlettuce-core/artifactId/exclusion/exclusions/dependencydependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion3.1.0-m4/version/dependency3.2 方案二刷新节点拓扑视图 Redis节点异常服务端的Redis集群拓扑被刷新了Java程序没有获取到新的拓扑。 Lettuce官方文档中关于Redis Cluster的相关说明Lettuce处理Moved和Ask永久重定向由于命令重定向你必须刷新节点拓扑视图。而自适应拓扑刷新Adaptive updates与定时拓扑刷新Periodic updates是默认关闭的可以通过如下代码打开。 https://github.com/lettuce-io/lettuce-core/wiki/Redis-Cluster#user-content-refreshing-the-cluster-topology-view 修改代码如下 package com.montnets.common.redis;import io.lettuce.core.ClientOptions; import io.lettuce.core.cluster.ClusterClientOptions; import io.lettuce.core.cluster.ClusterTopologyRefreshOptions; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.connection.RedisClusterConfiguration; import org.springframework.data.redis.connection.RedisNode; import org.springframework.data.redis.connection.RedisPassword; import org.springframework.data.redis.connection.lettuce.LettuceClientConfiguration; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration; import org.springframework.stereotype.Component;import java.time.Duration; import java.util.HashSet; import java.util.List; import java.util.Set;Component public class RedisPoolConfig {Autowiredprivate RedisProperties redisProperties;public GenericObjectPoolConfig? genericObjectPoolConfig(RedisProperties.Pool properties) {GenericObjectPoolConfig? config new GenericObjectPoolConfig();config.setMaxTotal(properties.getMaxActive());config.setMaxIdle(properties.getMaxIdle());config.setMinIdle(properties.getMinIdle());if (properties.getTimeBetweenEvictionRuns() ! null) {config.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRuns().toMillis());}if (properties.getMaxWait() ! null) {config.setMaxWaitMillis(properties.getMaxWait().toMillis());}return config;}Bean(destroyMethod destroy)public LettuceConnectionFactory lettuceConnectionFactory() {//开启 自适应集群拓扑刷新和周期拓扑刷新ClusterTopologyRefreshOptions clusterTopologyRefreshOptions ClusterTopologyRefreshOptions.builder()// 开启全部自适应刷新.enableAllAdaptiveRefreshTriggers() // 开启自适应刷新,自适应刷新不开启,Redis集群变更时将会导致连接异常// 自适应刷新超时时间(默认30秒).adaptiveRefreshTriggersTimeout(Duration.ofSeconds(30)) //默认关闭开启后时间为30秒// 开周期刷新.enablePeriodicRefresh(Duration.ofSeconds(20)) // 默认关闭开启后时间为60秒 ClusterTopologyRefreshOptions.DEFAULT_REFRESH_PERIOD 60 .enablePeriodicRefresh(Duration.ofSeconds(2)) .enablePeriodicRefresh().refreshPeriod(Duration.ofSeconds(2)).build();// https://github.com/lettuce-io/lettuce-core/wiki/Client-OptionsClientOptions clientOptions ClusterClientOptions.builder().topologyRefreshOptions(clusterTopologyRefreshOptions).build();LettuceClientConfiguration clientConfig LettucePoolingClientConfiguration.builder().poolConfig(genericObjectPoolConfig(redisProperties.getJedis().getPool()))//.readFrom(ReadFrom.MASTER_PREFERRED).clientOptions(clientOptions).commandTimeout(redisProperties.getTimeout()) //默认RedisURI.DEFAULT_TIMEOUT 60.build();ListString clusterNodes redisProperties.getCluster().getNodes();SetRedisNode nodes new HashSetRedisNode();clusterNodes.forEach(address - nodes.add(new RedisNode(address.split(:)[0].trim(), Integer.valueOf(address.split(:)[1]))));RedisClusterConfiguration clusterConfiguration new RedisClusterConfiguration();clusterConfiguration.setClusterNodes(nodes);clusterConfiguration.setPassword(RedisPassword.of(redisProperties.getPassword()));clusterConfiguration.setMaxRedirects(redisProperties.getCluster().getMaxRedirects());LettuceConnectionFactory lettuceConnectionFactory new LettuceConnectionFactory(clusterConfiguration, clientConfig);// lettuceConnectionFactory.setShareNativeConnection(false); //是否允许多个线程操作共用同一个缓存连接默认truefalse时每个操作都将开辟新的连接// lettuceConnectionFactory.resetConnection(); // 重置底层共享连接, 在接下来的访问时初始化return lettuceConnectionFactory;} }二 哨兵模式使用问题 1 问题描述 Redis Sentinel模式应用代码里只配置master节点当master宕机主从切换客户端报错 2 解决方案 通过哨兵连接节点应用连接配置master name应该和实例名称保持一致
http://www.yutouwan.com/news/114041/

相关文章:

  • 网站建设上公司做的网站过期了
  • 苏州网站建设技术全网推广平台哪家好
  • 个人注册网站一般做什么学做吃的网站
  • 汉口网站建设公司wordpress 经典推荐
  • 肥城网站建设公司个人帮企业做网站
  • 360网站做二维码商城网站结算页面怎么做
  • 什么样的网站快速盈利网站首页排版
  • 设计师招聘网站视频 播放网站怎么做
  • 搬家网站怎么做网页设计素材模版
  • 南宁做棋牌网站的公司单页网站如何做cpa
  • 黄山建设网站公司网络运维工程师考试
  • 网站seo新手线上推广招聘
  • 河北网站优化网站广告图片设计教程
  • 免费制作网站net域名wordpress关注公众号可见
  • 美工设计网站推荐仿造网站用侵权吗
  • 机械模板网站wordpress怎么安装模板
  • 微商城微网站开发域名永久买入要多少钱
  • 网站访问量怎么做app定制
  • 西安专业网站建设公司排名做外贸网站一定要会英语吗
  • 佛山行业网站设计推广方式方法
  • 企业网站建设进度国内空间没备案可以打开网站吗
  • 网站建设经验总结成都网站设计网站
  • 安徽省教育基本建设学会网站浙江省建设厅官网
  • 电脑网站转换手机网站怎么做无锡企业网站公司
  • 景观毕业设计作品网站哈尔滨网站建设制作哪家好
  • 网站建设流程简图石家庄建设局网站怎么打不开
  • 重庆市城乡建设施工安全管理总站网站做移动网站优化排名
  • 网站页面设计说明怎么写博客html模板
  • 网站制作架构建设部网站证件查询
  • 徐州住房与城乡建设部网站wordpress显示作者的信息