Sprintboot中使用Redis的一些總結

Sprintboot中使用Redis的一些總結

初步使用

在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
Redis配置文件
看一下發現這幾點:
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類:
Redis自動配置文件
看這個@EnableConfigurationProperties(RedisProperties.class) 有了這個Enable纔將上面看到的RedisProperties類注入到IOC容器。注意這裏的@EnableConfigurationProperties註解,他是配合上面RedisProperties類中的@ConfigurationProperties註解一起使用,才能將RedisProperties注入到IOC的。因爲上面的RedisProperties類上沒有注入IOC的任何相關注解,只有一個@ConfigurationProperties,所以RedisProperties並不是一定會注入IOC,@EnableConfigurationProperties相當於把使用 @ConfigurationProperties 的類進行了一次注入。

RedisAutoConfiguration類裏面有兩個內部類:RedisConnectionConfigurationRedisConfiguration
在這裏插入圖片描述
先看RedisConnectionConfiguration類:
RedisConnectionConfiguration類
類上的註釋說了,這是一個Redis連接配置類。裏面是三種配置方式的配置:

  • RedisProperties properties 簡單配置,單機版本
  • RedisSentinelConfiguration sentinelConfiguration 主從版本配置
  • RedisClusterConfiguration clusterConfiguration 集羣版本配置

這幾個配置文件下面就是一個注入到IOC的JedisConnectionFactory,他是Redis的連接工廠類,主要作用就是根據配置文件中的配置來取Redis各種連接。

再下面一個類是RedisConfiguration
RedisConfiguration類
註釋裏面說這是一個標準的Redis配置類。
這個類裏面配置了2個Bean,redisTemplatestringRedisTemplate ,終於找到他們了,上面說的stringRedisTemplate 是在這裏注入到IOC的。
但是這2個Bean的配置上面都有一個@ConditionalOnMissingBean 註解,看字面意思大概能猜的到,意思是隻有當我們沒有注入括號裏面指定的Bean對象的時候,這2個類上面的@Bean才起作用。所以當我們不手動進行任何配置的時候仍然可以使用redisTemplatestringRedisTemplate

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章