Sprintboot中使用Redis的一些总结

Sprintboot中使用Redis的一些总结

  • 初步使用
  • 探究一下

初步使用

在pom.xml中加入redis相关依赖


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

然后在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
Sprintboot中使用Redis的一些总结_第1张图片
看一下发现这几点:
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类:
Sprintboot中使用Redis的一些总结_第2张图片
看这个@EnableConfigurationProperties(RedisProperties.class) 有了这个Enable才将上面看到的RedisProperties类注入到IOC容器。注意这里的@EnableConfigurationProperties注解,他是配合上面RedisProperties类中的@ConfigurationProperties注解一起使用,才能将RedisProperties注入到IOC的。因为上面的RedisProperties类上没有注入IOC的任何相关注解,只有一个@ConfigurationProperties,所以RedisProperties并不是一定会注入IOC,@EnableConfigurationProperties相当于把使用 @ConfigurationProperties 的类进行了一次注入。

RedisAutoConfiguration类里面有两个内部类:RedisConnectionConfigurationRedisConfiguration
Sprintboot中使用Redis的一些总结_第3张图片
先看RedisConnectionConfiguration类:
Sprintboot中使用Redis的一些总结_第4张图片
类上的注释说了,这是一个Redis连接配置类。里面是三种配置方式的配置:

  • RedisProperties properties 简单配置,单机版本
  • RedisSentinelConfiguration sentinelConfiguration 主从版本配置
  • RedisClusterConfiguration clusterConfiguration 集群版本配置

这几个配置文件下面就是一个注入到IOC的JedisConnectionFactory,他是Redis的连接工厂类,主要作用就是根据配置文件中的配置来取Redis各种连接。

再下面一个类是RedisConfiguration
Sprintboot中使用Redis的一些总结_第5张图片
注释里面说这是一个标准的Redis配置类。
这个类里面配置了2个Bean,redisTemplatestringRedisTemplate ,终于找到他们了,上面说的stringRedisTemplate 是在这里注入到IOC的。
但是这2个Bean的配置上面都有一个@ConditionalOnMissingBean 注解,看字面意思大概能猜的到,意思是只有当我们没有注入括号里面指定的Bean对象的时候,这2个类上面的@Bean才起作用。所以当我们不手动进行任何配置的时候仍然可以使用redisTemplatestringRedisTemplate

你可能感兴趣的:(spring,java)