这是我参与2022首次更文挑战的第22天,活动详情查看:2022首次更文挑战
昨天redis入门,今天我们来聊一下操作,说白了就是写代码,程序员会吹,代码能力没有没用。
我建议学习任何东西之前,先玩起来,不要直接去学理论,学学,学到从入门到到放弃,先用起来,然后熟练之后,再用理论引导实践,进而达到知行合一的目的,这才叫学会。
导入依赖
我们使用jedis来操作redis,所以我们需要导入如下依赖,就像这样:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
JedisPool
Jedis不是线程安全的,因此我们需要从jedispool中获取jedis实例,我们可以简单看一下jedispool。
我们可以看到有两个初始化方法,我们选择第二个,第二个可以可以搞一些灵活的配置,我们看看这个配置里面可以配置什么。
这个类是配置类就是我们这个池化的默认配置,简单介绍一下
minEvictableIdleTimeMillis:资源的最小空闲时间,达到这个数值就清除空闲
timeBetweenEvictionRunsMillis:空闲资源的检测周期,建议设置
testWhileIdle:是否开启空闲检测
numTestsPerEvictionRun:做空闲资源检测时,每次检测资源的个数,值为负1就是检测所有。
当然我们还要看它的父类,也扩展了一些配置属性:
maxTotal 资源池中的最大连接数 maxIdle 资源池允许的最大空闲连接数 minIdle 资源池确保的最少空闲连接数
Pool
我们看明白配置之后呢,我们就可以初始化一个池子了,那我们来看看,到底怎么初始化的
初始化之后,它会调用super的构造方法,我们看看都干了什么?
初始化了一个池子,我们点进去看下,都做了什么?我们猜就是对池子先看看有没有,有就销毁,没有才初始化:
和我们猜的一样。
搞一个池子
ok,理论学会了,我们就搞一个池子玩玩,代码如下:
我们指定配置文件为redis开头的都映射到这个对象中,然后我们就有了配置
@Bean
@ConfigurationProperties("redis")
public JedisPoolConfig jedisPoolConfig() {
return new JedisPoolConfig();
}
之后生成一个池子,原理前面都说了。
@Bean(destroyMethod = "close")
public JedisPool jedisPool(@Value("${redis.host}") String host) {
return new JedisPool(jedisPoolConfig(), host);
}
运行看结果
ok,成功。