java中使用redis(jedis)

1、背景

springboot + maven

1、引入依赖

  <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>

2、在配置文件中添加配置(application.dev.properties)

######### redis

# Redis服务器地址
#jedis.host=120.79.19.125
jedis.host=127.0.0.1
# Redis服务器连接端口
jedis.port=6379
# Redis服务器连接密码
jedis.password=123456
# 连接池中的最大空闲连接
jedis.maxIdle=300
# 连接池中的最小空闲连接
jedis.minIdle=10
# 连接池中的最大连接数
jedis.maxTotal=30
# 连接池最大阻塞等待时间(使用负值表示没有限制)
jedis.maxWaitMillis=1000
# 连接超时时间(毫秒)
jedis.timeout=0
# 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true
#jedis.blockWhenExhausted=true

3、创建RedisConfig类

@Data
@Component
//@ConfigurationProperties(prefix = "jedis")
@Configuration
public class RedisConfig/* implements Serializable */{

	//private static final long serialVersionUID = 1097752157567754456L;

	@Value("${jedis.host}")
	private String host;

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

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

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

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

	@Value("${jedis.minIdle}")
	private Integer minIdle;

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

	@Value("${jedis.maxWaitMillis}")
	private Long maxWaitMillis;

	//private Boolean blockWhenExhausted;


	@Bean
	public JedisPool redisPoolFactory()  throws Exception{
		System.out.println("JedisPool注入成功!!");
		System.out.println("redis地址:" + host + ":" + port);
		JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
		jedisPoolConfig.setMaxIdle(maxIdle);
		jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
		// 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true

		// 是否启用pool的jmx管理功能, 默认true
		jedisPoolConfig.setJmxEnabled(true);
		return new JedisPool(jedisPoolConfig, host, port, timeout, password);
	}



}

下面是测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestApplicationTests {

    @Autowired
    private JedisPool jedisPool;

    @Test
    public void test(){
        Jedis jedis = jedisPool.getResource();
        System.out.println("连接成功");
        System.out.println(jedis.ping());
        //jedis.set("userName","fengling4");

        System.out.println(jedis.get("userName"));
    }
}

注意: 测试的时候要在项目自动生成的test文件夹下的测试启动类下进行测试,在一个普通的类中写main方法运行会报错空指针

另外 上面用的是@Value注解获取配置的值,还有一种方法是
RedisConfig.java

@Data
@Component
@ConfigurationProperties(prefix = "jedis")
public class RedisConfig/* implements Serializable */{

	//private static final long serialVersionUID = 1097752157567754456L;

	private String host;

	private Integer port;

	private String password;

	private Integer timeout;

	private Integer maxIdle;
	
	private Integer minIdle;

	private Integer maxTotal;

	private Long maxWaitMillis;

	//private Boolean blockWhenExhausted;

新建一个RedisUtil.java

@Configuration
public class RedisUtil {

	@Autowired
	private RedisConfig redisConfig;

	@Bean
	public JedisPool jedisPool() {
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMinIdle(redisConfig.getMinIdle());
		config.setMaxIdle(redisConfig.getMaxIdle());
		config.setMaxWaitMillis(redisConfig.getMaxWaitMillis());
		config.setMaxTotal(redisConfig.getMaxTotal());
		//config.setBlockWhenExhausted(redisConfig.getBlockWhenExhausted());

		// 是否启用pool的jmx管理功能, 默认true
		config.setJmxEnabled(true);
		return new JedisPool(config,
				redisConfig.getHost(),
				redisConfig.getPort(),
				redisConfig.getTimeout(),
				redisConfig.getPassword());
	}
}

测试同上
说明:

@ConfigurationProperties(prefix = "jedis")

这个就是获取以jedis开头的配置的属性值,属性值的映射会根据jedis后面的属性名来进行映射

注意:这里会有一个这样的报错,在RedisConfig类 里面,但这个东西并不影响程序的运行(不影响redis的使用)
在这里插入图片描述
解决办法:
添加依赖

		<dependency>
            <groupId> org.springframework.boot </groupId>
            <artifactId> spring-boot-configuration-processor </artifactId>
            <optional> true </optional>
        </dependency>

但是又会有另外一个东西,也不影响程序的运行,这个我就不知道怎么去掉它了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值