spring boot整合redis获取异常或者获取不到

系统异常:org.springframework.data.redis.RedisConnec
tionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Could not get a resource from the pool

刚启动系统运行正常,过几天就会出现这个异常,以下是关于redise的配置:

redis.properties文件中的内容如下:

redis.hostName=127.0.0.1
redis.password=
#端口号

redis.port=6379
#客户端超时时间单位是毫秒 默认是2000
redis.timeout=10000

#最大空闲数

redis.maxIdle=300

#连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal

#redis.maxActive=600

#控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性

redis.maxTotal=300
#最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。

redis.maxWaitMillis=1000

#连接的最小空闲时间 默认1800000毫秒(30分钟)

redis.minEvictableIdleTimeMillis=300000

#每次释放连接的最大数目,默认3

redis.numTestsPerEvictionRun=1024

#逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1

redis.timeBetweenEvictionRunsMillis=30000

#是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个

redis.testOnBorrow=true

#在空闲时检查有效性, 默认false

redis.testWhileIdle=true

pom.xml中整合redis内容如下:


org.springframework.boot
spring-boot-starter-data-redis

redisConfig内容如下:

package com.brons.trans.redis;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import redis.clients.jedis.JedisPoolConfig;

@Configuration
@PropertySource("classpath:redis.properties")
public class RedisConfig {

Logger logger = LoggerFactory.getLogger(RedisConfig.class);
@Value("${redis.hostName}")
private String hostName;

@Value("${redis.port}")
private Integer port;

@Value("${redis.password}")
private String password;

@Value("${redis.timeout}")
private Integer timeout;

@Value("${redis.maxIdle}")
private Integer maxIdle;

@Value("${redis.maxTotal}")
private Integer maxTotal;

@Value("${redis.maxWaitMillis}")
private Integer maxWaitMillis;

@Value("${redis.minEvictableIdleTimeMillis}")
private Integer minEvictableIdleTimeMillis;

@Value("${redis.numTestsPerEvictionRun}")
private Integer numTestsPerEvictionRun;

@Value("${redis.timeBetweenEvictionRunsMillis}")
private long timeBetweenEvictionRunsMillis;

@Value("${redis.testOnBorrow}")
private boolean testOnBorrow;

@Value("${redis.testWhileIdle}")
private boolean testWhileIdle;

// @Value("${spring.redis.cluster.nodes}")
// private String clusterNodes;
//
// @Value("${spring.redis.cluster.max-redirects}")
// private Integer mmaxRedirectsac;

/**
 * JedisPoolConfig 连接池
 * 
 * @return
 */
@Bean
public JedisPoolConfig jedisPoolConfig() {
    logger.info("初始化RedisConfig.JedisPoolConfig 连接池====");
    JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
    // 最大空闲数
    jedisPoolConfig.setMaxIdle(maxIdle);
    // 连接池的最大数据库连接数
    jedisPoolConfig.setMaxTotal(maxTotal);
    // 最大建立连接等待时间
    jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
    // 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
    jedisPoolConfig.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
    // 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
    jedisPoolConfig.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
    // 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
    jedisPoolConfig.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    // 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
    jedisPoolConfig.setTestOnBorrow(testOnBorrow);
    // 在空闲时检查有效性, 默认false
    jedisPoolConfig.setTestWhileIdle(testWhileIdle);
    return jedisPoolConfig;
}

/**
 * 单机版配置 @Title: JedisConnectionFactory @param @param
 * jedisPoolConfig @param @return @return JedisConnectionFactory @autor
 * lpl @date 2018年2月24日 @throws
 */
@Bean
public JedisConnectionFactory JedisConnectionFactory(JedisPoolConfig jedisPoolConfig) {
    logger.info("初始化RedisConfig.JedisConnectionFactory单机版配置====");
    JedisConnectionFactory JedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig);
    // 连接池
    JedisConnectionFactory.setPoolConfig(jedisPoolConfig);
    // IP地址
    JedisConnectionFactory.setHostName(hostName);
    // 端口号
    JedisConnectionFactory.setPort(port);
    // 如果Redis设置有密码
    JedisConnectionFactory.setPassword(password);
    // 客户端超时时间单位是毫秒
    JedisConnectionFactory.setTimeout(timeout);
    return JedisConnectionFactory;
}

/**
 * 实例化 RedisTemplate 对象
 *
 * @return
 */
@Bean
public RedisTemplate<String, Object> functionDomainRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
    initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
    return redisTemplate;
}

/**
 * 设置数据存入 redis 的序列化方式,并开启事务
 * 
 * @param redisTemplate
 * @param factory
 */
private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) {
    // 如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to
    // String!
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setHashKeySerializer(new StringRedisSerializer());
    redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
    redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
    // 开启事务
    redisTemplate.setEnableTransactionSupport(true);
    redisTemplate.setConnectionFactory(factory);
}

/**
 * 注入封装RedisTemplate @Title: redisUtil @return RedisUtil @autor lpl @date
 * 2017年12月21日 @throws
 */
@Bean(name = "redisUtil")
public RedisUtil redisUtil(RedisTemplate<String, Object> redisTemplate) {
    RedisUtil redisUtil = new RedisUtil();
    redisUtil.setRedisTemplate(redisTemplate);
    return redisUtil;
}

}

RedisUtil工具类文件内容如下:

package com.brons.trans.redis;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.CollectionUtils;

public class RedisUtil {

private RedisTemplate<String, Object> redisTemplate;  

public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {  
    this.redisTemplate = redisTemplate;  
}  
//=============================common============================  
/** 
 * 指定缓存失效时间 
 * @param key 键 
 * @param time 时间(秒) 
 * @return 
 */  
public boolean expire(String key,long time){  
    try {  
        if(time>0){  
            redisTemplate.expire(key, time, TimeUnit.SECONDS);  
        }  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 根据key 获取过期时间 
 * @param key 键 不能为null 
 * @return 时间(秒) 返回0代表为永久有效 
 */  
public long getExpire(String key){  
    return redisTemplate.getExpire(key,TimeUnit.SECONDS);  
}  

/** 
 * 判断key是否存在 
 * @param key 键 
 * @return true 存在 false不存在 
 */  
public boolean hasKey(String key){  
    try {  
        return redisTemplate.hasKey(key);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 删除缓存 
 * @param key 可以传一个值 或多个 
 */  
@SuppressWarnings("unchecked")  
public void del(String ... key){  
    if(key!=null&&key.length>0){  
        if(key.length==1){  
            redisTemplate.delete(key[0]);  
        }else{  
            redisTemplate.delete(CollectionUtils.arrayToList(key));  
        }  
    }  
}  

//============================String=============================  
/** 
 * 普通缓存获取 
 * @param key 键 
 * @return 值 
 */  
public Object get(String key){  
    return key==null?null:redisTemplate.opsForValue().get(key);  
}  

/** 
 * 普通缓存放入 
 * @param key 键 
 * @param value 值 
 * @return true成功 false失败 
 */  
public boolean set(String key,Object value) {  
     try {  
        redisTemplate.opsForValue().set(key, value);  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  

}  

/** 
 * 普通缓存放入并设置时间 
 * @param key 键 
 * @param value 值 
 * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 
 * @return true成功 false 失败 
 */  
public boolean set(String key,Object value,long time){  
    try {  
        if(time>0){  
            redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);  
        }else{  
            set(key, value);  
        }  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 递增 
 * @param key 键 
 * @param by 要增加几(大于0) 
 * @return 
 */  
public long incr(String key, long delta){    
    if(delta<0){  
        throw new RuntimeException("递增因子必须大于0");  
    }  
    return redisTemplate.opsForValue().increment(key, delta);  
}  

/** 
 * 递减 
 * @param key 键 
 * @param by 要减少几(小于0) 
 * @return 
 */  
public long decr(String key, long delta){    
    if(delta<0){  
        throw new RuntimeException("递减因子必须大于0");  
    }  
    return redisTemplate.opsForValue().increment(key, -delta);    
}    

//================================Map=================================  
/** 
 * HashGet 
 * @param key 键 不能为null 
 * @param item 项 不能为null 
 * @return 值 
 */  
public Object hget(String key,String item){  
    return redisTemplate.opsForHash().get(key, item);  
}  

/** 
 * 获取hashKey对应的所有键值 
 * @param key 键 
 * @return 对应的多个键值 
 */  
public Map<Object,Object> hmget(String key){  
    return redisTemplate.opsForHash().entries(key);  
}  

/** 
 * HashSet 
 * @param key 键 
 * @param map 对应多个键值 
 * @return true 成功 false 失败 
 */  
public boolean hmset(String key, Map<String,Object> map){    
    try {  
        redisTemplate.opsForHash().putAll(key, map);  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * HashSet 并设置时间 
 * @param key 键 
 * @param map 对应多个键值 
 * @param time 时间(秒) 
 * @return true成功 false失败 
 */  
public boolean hmset(String key, Map<String,Object> map, long time){    
    try {  
        redisTemplate.opsForHash().putAll(key, map);  
        if(time>0){  
            expire(key, time);  
        }  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 向一张hash表中放入数据,如果不存在将创建 
 * @param key 键 
 * @param item 项 
 * @param value 值 
 * @return true 成功 false失败 
 */  
public boolean hset(String key,String item,Object value) {  
     try {  
        redisTemplate.opsForHash().put(key, item, value);  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 向一张hash表中放入数据,如果不存在将创建 
 * @param key 键 
 * @param item 项 
 * @param value 值 
 * @param time 时间(秒)  注意:如果已存在的hash表有时间,这里将会替换原有的时间 
 * @return true 成功 false失败 
 */  
public boolean hset(String key,String item,Object value,long time) {  
     try {  
        redisTemplate.opsForHash().put(key, item, value);  
        if(time>0){  
            expire(key, time);  
        }  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 删除hash表中的值 
 * @param key 键 不能为null 
 * @param item 项 可以使多个 不能为null 
 */  
public void hdel(String key, Object... item){    
    redisTemplate.opsForHash().delete(key,item);  
}   

/** 
 * 判断hash表中是否有该项的值 
 * @param key 键 不能为null 
 * @param item 项 不能为null 
 * @return true 存在 false不存在 
 */  
public boolean hHasKey(String key, String item){  
    return redisTemplate.opsForHash().hasKey(key, item);  
}   

/** 
 * hash递增 如果不存在,就会创建一个 并把新增后的值返回 
 * @param key 键 
 * @param item 项 
 * @param by 要增加几(大于0) 
 * @return 
 */  
public double hincr(String key, String item,double by){    
    return redisTemplate.opsForHash().increment(key, item, by);  
}  

/** 
 * hash递减 
 * @param key 键 
 * @param item 项 
 * @param by 要减少记(小于0) 
 * @return 
 */  
public double hdecr(String key, String item,double by){    
    return redisTemplate.opsForHash().increment(key, item,-by);    
}    

//============================set=============================  
/** 
 * 根据key获取Set中的所有值 
 * @param key 键 
 * @return 
 */  
public Set<Object> sGet(String key){  
    try {  
        return redisTemplate.opsForSet().members(key);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return null;  
    }  
}  

/** 
 * 根据value从一个set中查询,是否存在 
 * @param key 键 
 * @param value 值 
 * @return true 存在 false不存在 
 */  
public boolean sHasKey(String key,Object value){  
    try {  
        return redisTemplate.opsForSet().isMember(key, value);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 将数据放入set缓存 
 * @param key 键 
 * @param values 值 可以是多个 
 * @return 成功个数 
 */  
public long sSet(String key, Object...values) {  
    try {  
        return redisTemplate.opsForSet().add(key, values);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return 0;  
    }  
}  

/** 
 * 将set数据放入缓存 
 * @param key 键 
 * @param time 时间(秒) 
 * @param values 值 可以是多个 
 * @return 成功个数 
 */  
public long sSetAndTime(String key,long time,Object...values) {  
    try {  
        Long count = redisTemplate.opsForSet().add(key, values);  
        if(time>0) expire(key, time);  
        return count;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return 0;  
    }  
}  

/** 
 * 获取set缓存的长度 
 * @param key 键 
 * @return 
 */  
public long sGetSetSize(String key){  
    try {  
        return redisTemplate.opsForSet().size(key);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return 0;  
    }  
}  

/** 
 * 移除值为value的 
 * @param key 键 
 * @param values 值 可以是多个 
 * @return 移除的个数 
 */  
public long setRemove(String key, Object ...values) {  
    try {  
        Long count = redisTemplate.opsForSet().remove(key, values);  
        return count;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return 0;  
    }  
}  
//===============================list=================================  

/** 
 * 获取list缓存的内容 
 * @param key 键 
 * @param start 开始 
 * @param end 结束  0 到 -1代表所有值 
 * @return 
 */  
public List<Object> lGet(String key,long start, long end){  
    try {  
        return redisTemplate.opsForList().range(key, start, end);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return null;  
    }  
}  

/** 
 * 获取list缓存的长度 
 * @param key 键 
 * @return 
 */  
public long lGetListSize(String key){  
    try {  
        return redisTemplate.opsForList().size(key);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return 0;  
    }  
}  

/** 
 * 通过索引 获取list中的值 
 * @param key 键 
 * @param index 索引  index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 
 * @return 
 */  
public Object lGetIndex(String key,long index){  
    try {  
        return redisTemplate.opsForList().index(key, index);  
    } catch (Exception e) {  
        e.printStackTrace();  
        return null;  
    }  
}  

/** 
 * 将list放入缓存 
 * @param key 键 
 * @param value 值 
 * @param time 时间(秒) 
 * @return 
 */  
public boolean lSet(String key, Object value) {  
    try {  
        redisTemplate.opsForList().rightPush(key, value);  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 将list放入缓存 
 * @param key 键 
 * @param value 值 
 * @param time 时间(秒) 
 * @return 
 */  
public boolean lSet(String key, Object value, long time) {  
    try {  
        redisTemplate.opsForList().rightPush(key, value);  
        if (time > 0) expire(key, time);  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 将list放入缓存 
 * @param key 键 
 * @param value 值 
 * @param time 时间(秒) 
 * @return 
 */  
public boolean lSet(String key, List<Object> value) {  
    try {  
        redisTemplate.opsForList().rightPushAll(key, value);  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 将list放入缓存 
 * @param key 键 
 * @param value 值 
 * @param time 时间(秒) 
 * @return 
 */  
public boolean lSet(String key, List<Object> value, long time) {  
    try {  
        redisTemplate.opsForList().rightPushAll(key, value);  
        if (time > 0) expire(key, time);  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}  

/** 
 * 根据索引修改list中的某条数据 
 * @param key 键 
 * @param index 索引 
 * @param value 值 
 * @return 
 */  
public boolean lUpdateIndex(String key, long index,Object value) {  
    try {  
        redisTemplate.opsForList().set(key, index, value);  
        return true;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return false;  
    }  
}   

/** 
 * 移除N个值为value  
 * @param key 键 
 * @param count 移除多少个 
 * @param value 值 
 * @return 移除的个数 
 */  
public long lRemove(String key,long count,Object value) {  
    try {  
        Long remove = redisTemplate.opsForList().remove(key, count, value);  
        return remove;  
    } catch (Exception e) {  
        e.printStackTrace();  
        return 0;  
    }  
}

}

0
qq_37318800
qq_码农 已解决,boot已经整合了redis,我有使用配置文件配置了一遍,使用boot默认的redis配置方式就好了
大约 2 个月之前 回复

2个回答

总感觉使用Jedis之后,Jedis得不到释放,但是系统重启之后调用多次Jedis都没有问题

0
qq_37318800
qq_码农 已解决,boot已经整合了redis,我有使用配置文件配置了一遍,使用boot默认的redis配置方式就好了
大约一个月之前 回复

密码不对或配置文件有问题redis.conf中注释掉 bind 127.0.0.1 试试

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
redis获取异常或者获取不到
异常: org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource...
Spring Boot整合redis
Spring Boot 做的一个简单的增删改查,前台页面整合Thymeleaf模板,数据源druid,声明式事务,整合redis,并开启redis事务
Spring Boot 使用Redis拒绝连接以及获取不到连接池
使用环境 使用spring boot构建上层服务项目 redis缓存相关方法写到公共工具类,被上层服务依赖 common-utils redis是安装在本地虚拟机中 启动服务,首先程序报错为拒绝连接: 然后使用本地可视化工具进行测试连接,显示同样的错误connection refused 解决方法: 首先在redis.conf中注释掉bind 127.0.0.1这一行,其意思是只允许本...
spring boot 获取不到自定义文件
  -- jar 包下使用 ClassPathResource classPathResource = new ClassPathResource(filename); //inputStream = this.getClass().getResourceAsStream(filename); inputStream = classPathResource.getInputStream()...
Spring boot与Redis的整合使用
关于Redis的安装与集群部署,可以参考《Linux下Redis的集群部署》 一、Redis的单机使用 (1) 新建gradle项目,依赖如下: dependencies { compile 'org.springframework.boot:spring-boot-starter-web' compile ('org.springframework.boot:spring...
Redis获取不到连接
Redis获取不到连接问题 问题场景 我们在继承Redis的时候,可能只是一个简单的集成,保证可以存取数据就可以了,但是有的时候我们使用云Redis的时候,就会出现Redis无法获取连接的情况,究其原因是因为我们自己集成Redis的时候没有为Redis设置密码,云Redis一般都会设置访问密码,这样就造成了无法获取连接的问题出现。 解决方案 为我们的Reids设置密码,在配置Re
第五篇:Spring Boot整合Redis
Redis 是一个高性能的key-value数据库它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。使用redis作为缓存技术方案,主要是redis缓存技术的特点就在于高效,因为目前涉及的数据量逐渐增多,在对于数据的存储上面和sql以及服务器资源优化上面就来的特别的重要。而redi...
spring boot整合redis及redis注解开发
spring boot整合redis 步骤一:导入pom依赖 &amp;lt;!-- redis与springboot 依赖 --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-boot-starter-data-...
spring和redis整合异常整理
记录 1、Unable to validate object异常信息如下:org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Coul
spring boot 获取文件
问题: 由于使用spring boot + maven 管理项目,所以会把项目打成jar包来进行运行。在不打成jar的情况下,正常情况一般都是读取绝对路径来进行获取配置文件路径。 File file = ResourceUtils.getFile(&quot;classpath:WEB-INF/templet/picking_off.xlsx&quot;); 以上方法来获取。但是当项目打包成jar ...
spring boot参数配置和获取
yml中配置如下参数:worklog: overdue: 7 beforeDay: 3 workload: standard: 8 exceed: 16 upload: maxSize: 2000000 通过configuration获取:import lombok.Data; import org.springframework.beans.factor...
Spring Boot 获取配置文件
1.yml增加配置 注意:冒号后面一定要有一个空格 company: name: 天霸 address: 北京市海淀区 2.编写测试类 (1)通过value获取 @Value(&quot;${company.name}&quot;) private String name; @Value(&quot;${company.address}&quot;) private String ...
spring boot、 mybaits、 spring security、 redis整合
spring boot、 mybaits、 spring security、 redis整合
spring boot,mybaits,spring security,redis整合
spring boot,mybaits,spring security,redis整合
Spring获取不到数据库连接
xml配置文件如下:n n n n n n n n n n n n n n ndao层类代码如下:n @Repositorynpublic class RemindDaoImpl implements IRemindDao nn @Autowiredn private JdbcTemplate jdbcTemplate;n n @Overriden public List> queryRemind() n String sql = "";n System.out.println(jdbcTemplate);n return null;n nnnn入口程序如下:npublic static void main( String[] args )n n ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");n RemindDaoImpl dao = new RemindDaoImpl();n dao.queryRemind();n System.out.println( "Hello World!" );n n n 输出的jdbcTemplate为null,请帮忙看一下怎么回事n
spring获取不到bean
今天在做spring单元测试的时候,有一个bean死活加载不到。 错误: [code=&quot;java&quot;]org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'userService' is defined at org.springframework.beans.factory.sup...
Spring Boot入门系列之:九、Spring Boot整合Redis
Spring Boot Redis 开发环境 开发工具: Intellij IDEA 2018.2.6 springboot: 2.0.7.RELEASE jdk: 1.8.0_192 maven: 3.6.0 redis: 4.0.12 redis 简介 什么是 redis ? Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型...
spring boot笔记6——spring boot整合redis、集群设置
目录 一、spring boot整合redis 1,添加依赖 2、修改application.properties 3,配置缓存到redis中 二、集群设置 1,spring.properties中加入集群地址 2,创建Redis配置类 spring boot整合redis 一、spring boot整合redis 1,添加依赖 spring boot要整合redis第一步当...
spring boot整合redis demo代码
在spring boot中集成redis,包括redis的链接配置,操作方法以及Controller的使用,直接修改properties的链接即可运行
spring boot整合redis的相关记录(jedis)
spring boot现在越来越多的项目在使用,掌握spring boot 整合相关工具的技术,变得越来越重要。这里记录下自己整合redis的一些理解,目前只是单机版,没有用到哨兵模式以及集群。使用的是jedis技术。 首先需要在配置文件中配置数据,如host,port,password,timeout,database等等属性,截图如下 这里需要说明一下,上面的数据库模块,是必须要有的,...
Spring Boot 整合Redis进行数据缓存
在我的毕设项目中,我使用Redis进行数据缓存还有对session进行缓存,所以我开始对Redis进行学习,下面是我项目中如何对Spring Boot和Redis进行整合的介绍。 安装Redis 我们直接访问github网址:redis下载,下载最新的windows X64版本的压缩包 下载完成后随便解压到我们的盘符内的文件即可 开启Redis 解压完成后我们来开启Red...
Spring Boot 整合 Redis 实现缓存操作
目录 一、缓存的应用场景 概述 什么是缓存? 缓存的应用场景有哪些呢? 为什么要用redis做缓存: 缓存实现思路: 二、更新缓存的策略 三、运行springboot-mybatis-redis工程案例 1.数据库和 Redis 准备 a.创建数据库 springbootdb b.创建表 city c.插入数据 d.redis安装 2.springboot-my...
redis集群搭建,以及spring boot整合redis集群
redis的集群搭建非常简单,我使用的是redis 4.0.10在centos7.2 上搭建的,按照配置文件搭建就可以,并且前面的博客收藏了集群搭建的链接。 搭建完以后就是项目中整合redis集群,这里有个小推荐,使用jedis整合redis集群非常简单,下面是整合的步骤: 一、单机版和集群版的redis整合 1)首先在pom.xml中导入jar包 &amp;lt;!-- redis --&amp;g...
使用Spring Boot整合Redis操作缓存
使用Spring Boot整合Redis操作缓存 1.配置实体类–省略 2.配置mapper–省略 3.配置service–省略 以上三步可参考:https://blog.csdn.net/w1316022737/article/details/83626482 下来操作SpringBoot整合Redis 首先Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库,缓存和...
Spring Boot——Redis安装配置与应用整合
引言 Spring Boot默认以ConcurrentHashMap作为缓存容器,但默认的缓存容器在简单的场景使用还是可以的,而作为NoSQL的代表,Redis可以做内存数据库、消息中间件都是不错的,而且有RedisDesktopManager作为可视化管理工具,让我们能够像使用一般数据库一样编辑内存中的数据,因此,大多数企业都要求能够掌握基本的Redis的使用。 本篇博客将介绍如下内容: ...
LINUX下安装redis及spring boot整合测试
第一步下载Redis: 下载地址:http://redis.io/download,下载最新文档版本。 第二步上传到linux并进行解压编译:   $ tar xzf redis-2.8.17.tar.gz $ cd redis-2.8.17 $ make-2.8.17.tar.gz $ cd redis-2.8.17 $ make 第三步通过vi编辑器修改访问IP允许其他设备访问: ...
spring boot与mybatis与二级缓存redis整合
目录 零、spring boot与mybatis整合 一、版本 二、目录树与jar包 三、配置文件 四、实体类 五、缓存类 六、xml文件使用二级缓存 七、使用二级缓存结果 零、spring boot与mybatis整合 https://blog.csdn.net/xushiyu1996818/article/details/89036186 一、版本 使用java1...
Spring Boot --整合redis进行缓存注解开发
1.引入redis依赖: &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-redis&lt;/artifactId&gt; &lt;/dependency&gt; 2.配置redis: spring...
Redis无法获取连接异常
最近搞缓存,所以折腾了一下redis,用jedis连接redis,发现在64位windows下运行一段时间就报错了Accepting client connection: accept: Unknown error, 然后jedis就一直连接超时是服务器停了。重启一下redis就又能连接上了。redis配置的日志级别是debug,也没抛其他错误,看了连接数也就我一个。纠结啊。。。。
spring boot整合redis实现缓存机制
一、引入redis和jpa application.properties配置如下: ################################################################# ###########################jpa的配置################################ ########################
Spring Boot 2.X 学习日记——整合redis
文章目录Redis介绍添加依赖包配置Redis测试XXXOperations Redis介绍 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集...
Spring Boot学习之整合Redis实现缓存
1、什么是缓存? 在互联网场景下,尤其 2C 端大流量场景下,需要将一些经常展现和不会频繁变更的数据,存放在存取速率更快的地方。缓存就是一个存储器,在技术选型中,常用 Redis 作为缓存数据库。缓存主要是在获取资源方便性能优化的关键方面。Redis 是一个高性能的 key-value 数据库。 缓存的应用场景有哪些呢?比如常见的电商场景,根据商品 ID 获取商品信息时,店
Spring Boot整合Redis实现消息队列的发布订阅
Spring Boot整合Redis实现消息队列的发布订阅加入Redis的集成依赖,springboot会帮我们自动注入StringRedisTemplate操作模板 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifa...
Spring Boot整合Redis做集中式缓存
虽然EhCache已经能够适用很多应用场景,但是由于EhCache是进程内的缓存框架,在集群模式下时,各应用服务器之间的缓存都是独立的,因此在不同服务器的进程间会存在缓存不一致的情况。即使EhCache提供了集群环境下的缓存同步策略,但是同步依然需要一定的时间,短暂的缓存不一致依然存在。 在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存是个不错的选择,因此本文将介绍如何在Spring Boot的缓存支持中使用Redis进行数据缓存。
spring boot实操之整合redis多数据源
本实例以两个redis实例为讲解对象。 第一步:封装基础配置类 package com.tencent.config.redisconfig; import org.springframework.cache.CacheManager; import org.springframework.data.redis.cache.RedisCacheManager; import o...
spring boot 手动获取实现类
spring boot 手动获取实现类import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils;WebApplicationContext cxt = WebApplicationCont
spring boot 获取端口和 Ip
Spring boot  自带监听  实现接口即可在容器启动的时候  启动监听 获取 端口 代码 如下  import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent; import org.springframework.context.ApplicationList
Spring Boot 获取自定义参数
SpringBoot 获取自定义参数 自定义参数 我们在配置文件中写上 然后我们要怎么获取这个name的值呢? 这样就可以直接获取到值了。 我们来测试一下:
Spring Boot 获取上下文环境
在Spring中可以通过ContextLoader获取上下文环境 WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); 但是这种方式在Spring Boot是失效的。本文提供三种方案获取Spring Boot上下文环境。 1. 自动注入 @Auto...
Spring Boot 获取配置文件的值
@value和@ConfigurationProperties对比   @value @ConfigurationProperties   单个指定 批量指定 松散绑定 不支持 支持 SpEL 支持 不支持 JSR303数据校验 不支持 支持 复杂类型如map 不支持 支持 两种获取值方式的比较如上,...
相关热词 c#异步发送kafka c#窗体编号 c# 操作二进制文件 c# 反射 机制 c#线程 窗体失去响应 c#角度转弧度 c# 解析gps数据 c# vs设置 语法版本 c# json含回车 c#多线程demo