• Redis 连接失败redis Can't init enough connections amount!


    Can't init enough connections amount! Only 0 from 10 were initialized. Server: IP:6379

     无法初始化足够的连接数量!只有0和10被初始化。

    vi redis.conf

    注释:#bind 127.0.0.1

    protected-mode yes 改成 protected-mode no

    可能还是因为配置的连接池不够  

    我的原因的RedissonConfig配置的不够

    package com.guige.core.conf;
    
    import io.netty.channel.nio.NioEventLoopGroup;
    import org.redisson.Config;
    import org.redisson.Redisson;
    import org.redisson.RedissonClient;
    import org.redisson.client.codec.Codec;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.stereotype.Component;
    import org.springframework.util.ClassUtils;
    
    /**
     * Created by kl on 2017/09/26.
     * redisson 客户端配置
     */
    @Component
    @Configuration
    public class RedissonConfig {
        @Value("${spring.redis.host}")
        private String host;
        @Value("${spring.redis.port}")
        private Integer port;
        @Value("${spring.redis.password}")
        private String password;
    
        @Value("${spring.redis.pool.minidle}")
        private int connectionMinimumIdleSize = 10;//从节点最小空闲连接数)
        private int idleConnectionTimeout = 10000;
        private int pingTimeout = 1000;
        private int connectTimeout = 10000;
        @Value("${spring.redis.timeout}")
        private int timeout = 3000;
        private int retryAttempts = 3;//命令失败重试次数)
        private int retryInterval = 1500; //命令重试发送时间间隔,单位:毫秒)
        private int reconnectionTimeout = 3000;//重新连接时间间隔,单位:毫秒)
        private int failedAttempts = 3;//执行失败最大次数)
    
        private int subscriptionsPerConnection = 5;//单个连接最大订阅数量
        private String clientName = null; //名称
        @Value("${spring.redis.pool.minidle}")
        private int subscriptionConnectionMinimumIdleSize = 1; //从节点发布和订阅连接的最小空闲连接数)
        @Value("${spring.redis.pool.maxidle}")
        private int subscriptionConnectionPoolSize = 50; //(从节点发布和订阅连接池大小)
        @Value("${spring.redis.pool.maxidle}")
        private int connectionPoolSize = 64;//连接池大小)
        @Value("${spring.redis.database}")
        private int database = 0;
        private boolean dnsMonitoring = false;//是否启用DNS监测)
        private int dnsMonitoringInterval = 5000;//(DNS监测时间间隔,单位:毫秒)
    
        private int thread=0; //当前处理核数量 * 2
    
    
        @Bean(destroyMethod = "shutdown")
        RedissonClient redissonClient() throws Exception {
            Config config = new Config();
            config.useSingleServer().setAddress(host+":"+port)
                    .setConnectionMinimumIdleSize(connectionMinimumIdleSize)
                    .setConnectionPoolSize(connectionPoolSize)
                    .setDatabase(database)
                    .setDnsMonitoring(dnsMonitoring)
                    .setDnsMonitoringInterval(dnsMonitoringInterval)
                    .setSubscriptionConnectionMinimumIdleSize(subscriptionConnectionMinimumIdleSize)
                    .setSubscriptionConnectionPoolSize(subscriptionConnectionPoolSize)
                    .setSubscriptionsPerConnection(subscriptionsPerConnection)
                    .setClientName(clientName)
                    .setFailedAttempts(failedAttempts)
                    .setRetryAttempts(retryAttempts)
                    .setRetryInterval(retryInterval)
                    .setReconnectionTimeout(reconnectionTimeout)
                    .setTimeout(timeout)
                    .setConnectTimeout(connectTimeout)
                    .setIdleConnectionTimeout(idleConnectionTimeout)
                    .setPingTimeout(pingTimeout)
                    .setPassword(password);
            Codec codec = (Codec) ClassUtils.forName("org.redisson.codec.JsonJacksonCodec", ClassUtils.getDefaultClassLoader()).newInstance();
            config.setCodec(codec);
            config.setThreads(thread);
            config.setEventLoopGroup(new NioEventLoopGroup());
            config.setUseLinuxNativeEpoll(false);
            return Redisson.create(config);
        }
    }
    spring: 
     redis:
          database: 1
          host: 192.168.1.161
          port: 6379
          timeout: 50000
          password: 201805
          pool:
            # 连接池最大连接数(使用负值表示没有限制)
            maxactive: 64
            # 连接池中的最大空闲连接
            maxidle: 64
            # 连接池最大阻塞等待时间(使用负值表示没有限制)
            maxwait: -1
            # 连接池中的最小空闲连接
            minidle: 1
    package com.guige.core.conf;
    
    import com.guige.core.ext.common.redis.MyCacheErrorHandler;
    import com.guige.core.ext.common.redis.MyKeyGenerator;
    import com.guige.core.ext.common.redis.MyRedisCacheManager;
    import com.guige.core.ext.common.redis.MyRedisTemplate;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cache.interceptor.CacheErrorHandler;
    import org.springframework.cache.interceptor.KeyGenerator;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.cache.RedisCacheManager;
    import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.stereotype.Component;
    import redis.clients.jedis.JedisPoolConfig;
    
    /**
     * TODO
     *
     * @author songaw
     * @date 2018/7/17 11:29
     */
    @Component
    @Configuration
    public class RedisConf {
        @Value("${spring.redis.database}")
        private Integer database;
    
        @Value("${spring.redis.host}")
        private String host;
    
        @Value("${spring.redis.password}")
        private String password;
    
        @Value("${spring.redis.port}")
        private Integer port;
    
        @Value("${spring.redis.timeout}")
        private Integer timeout;
    
        @Value(value = "${spring.redis.expire:300}")
        private Integer expiration;
    
        @Value("${spring.redis.pool.maxactive}")
        private int maxActive;
    
        @Value("${spring.redis.pool.minidle}")
        private int minIdle;
    
        @Value("${spring.redis.pool.maxidle}")
        private int maxIdle;
    
        @Bean
        public JedisPoolConfig jedisPoolConfig(){
            JedisPoolConfig poolConfig = new JedisPoolConfig();
            poolConfig.setMaxIdle(this.maxIdle);
            poolConfig.setMinIdle(this.minIdle);
            poolConfig.setTestOnCreate(true);
            poolConfig.setTestOnBorrow(true);
            poolConfig.setTestOnReturn(true);
            poolConfig.setTestWhileIdle(true);
            return poolConfig;
        }
        @Bean
        public JedisConnectionFactory jedisConnectionFactory(){
            JedisPoolConfig config = jedisPoolConfig();
            JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(config);
            jedisConnectionFactory.setDatabase(this.database);
            jedisConnectionFactory.setHostName(this.host);
            jedisConnectionFactory.setPassword(this.password);
            jedisConnectionFactory.setPort(this.port);
            jedisConnectionFactory.setTimeout(this.timeout);
            return jedisConnectionFactory;
        }
        @Bean
       public  RedisTemplate redisTemplate(){
            MyRedisTemplate myRedisTemplate = new MyRedisTemplate();
            myRedisTemplate.setConnectionFactory(jedisConnectionFactory());
            return myRedisTemplate;
        }
        public RedisCacheManager redisCacheManager(){
            MyRedisCacheManager myRedisCacheManager = new MyRedisCacheManager(redisTemplate());
            return myRedisCacheManager;
        }
        @Bean
        public CacheErrorHandler cacheErrorHandler(){
            MyCacheErrorHandler myCacheErrorHandler = new MyCacheErrorHandler();
            return myCacheErrorHandler;
        }
        @Bean
        KeyGenerator keyGenerator(){
            MyKeyGenerator myKeyGenerator = new MyKeyGenerator();
            return myKeyGenerator;
        }
    }
  • 相关阅读:
    C程序设计语言学习笔记(二)
    字符串处理代码(国际化转换C++版) 荣
    取得MySQL数据库表,列信息的SQL语句 荣
    C++中,以类成员函数指针作为参数对std::map中的元素进行迭代处理 荣
    我的我的C#数据库操作类(与大家交流) 荣
    以较少代码实现DataGrid的排序,翻页,删除等功能 荣
    批处理文件的学习 荣
    DLL内存管理模板类 荣
    我的C++数据库访问库 荣
    我的C++数据库访问库临界区处理类 荣
  • 原文地址:https://www.cnblogs.com/songanwei/p/9171520.html
Copyright © 2020-2023  润新知