初步使用
在pom.xml中加入redis相關依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
然後在properties文件中配置配置文件
spring.redis.host=xxx
spring.redis.port=6379
spring.redis.password=xxxx
spring.redis.pool.max-active=-1
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=1000
然後就可以直接使用stringRedisTemplate
來向Redis裏面存取數據了:
@Autowired
private StringRedisTemplate stringRedisTemplate;
// 保存字符串
@Test
public void test() {
stringRedisTemplate.opsForValue().set("myStr", "abcdefg");
Assert.assertEquals("abcdefg", stringRedisTemplate.opsForValue().get("myStr"));
}
簡單的使用就是這麼簡單,甚至於連stringRedisTemplate
是什麼時候注入的都不知道,就能直接用了。所以還是稍微探究一下他到底是怎麼肥似。
探究一下
首頁探究到了這個類RedisProperties
:
看一下發現這幾點:
1.類上面有個註解@ConfigurationProperties(prefix = "spring.redis")
這裏是封裝了Redis所有配置文件的一個類。所以properties文件中怎麼寫Redis的配置,從這個類就能看出來了。首先一個,配置都要以spring.redis爲前綴,裏面能配置的內容包括:host、端口、密碼、連接池、集羣啥的都有。
2.這個類上面只有@ConfigurationProperties註解,並沒有注入IOC相關的註解,所以單看這個類他是沒有注入IOC容器的。
3.這裏面有3個對象(pool、sentinel、cluster),所以如果配置host 可以寫成spring.redis.host=localhost
,但是要配置連接池的放就要看一下Pool對象有什麼屬性了,所以連接池的配置要寫成spring.redis.pool.maxIdle=8
, 但是在properties文件中去寫spring.redis.pool.
後面提示的是max-idle,意思應該是一個意思,應該是哪裏做了映射,但是我沒找到。所以還是以提示的爲準。
屬性配好了,下面就是找到根據屬性來連Redis了。接下來在RedisProperties
的同級目錄下,找到個RedisAutoConfiguration
類:
看這個@EnableConfigurationProperties(RedisProperties.class)
有了這個Enable纔將上面看到的RedisProperties類注入到IOC容器。注意這裏的@EnableConfigurationProperties
註解,他是配合上面RedisProperties類中的@ConfigurationProperties註解一起使用,才能將RedisProperties
注入到IOC的。因爲上面的RedisProperties類上沒有注入IOC的任何相關注解,只有一個@ConfigurationProperties
,所以RedisProperties
並不是一定會注入IOC,@EnableConfigurationProperties
相當於把使用 @ConfigurationProperties
的類進行了一次注入。
RedisAutoConfiguration
類裏面有兩個內部類:RedisConnectionConfiguration
、RedisConfiguration
:
先看RedisConnectionConfiguration
類:
類上的註釋說了,這是一個Redis連接配置類。裏面是三種配置方式的配置:
- RedisProperties properties 簡單配置,單機版本
- RedisSentinelConfiguration sentinelConfiguration 主從版本配置
- RedisClusterConfiguration clusterConfiguration 集羣版本配置
這幾個配置文件下面就是一個注入到IOC的JedisConnectionFactory
,他是Redis的連接工廠類,主要作用就是根據配置文件中的配置來取Redis各種連接。
再下面一個類是RedisConfiguration
:
註釋裏面說這是一個標準的Redis配置類。
這個類裏面配置了2個Bean,redisTemplate
和stringRedisTemplate
,終於找到他們了,上面說的stringRedisTemplate
是在這裏注入到IOC的。
但是這2個Bean的配置上面都有一個@ConditionalOnMissingBean
註解,看字面意思大概能猜的到,意思是隻有當我們沒有注入括號裏面指定的Bean對象的時候,這2個類上面的@Bean
才起作用。所以當我們不手動進行任何配置的時候仍然可以使用redisTemplate
和stringRedisTemplate
。