SpringBoot整合Redis单机和整合Redis集的完整例⼦
Redis的客户端有很多,如Jedis,Jredis,Spring Data Redis….,所以SpringBOOT⽤了Spring Data Redis为了Redis提供了⼀种⾃动化的配置,我们只要添加相关依赖和相关配置就⾏。这⾥将说明如何整合redis单机和整合redis集。
⼀、SpringBoot整合Redis单机
1.添加相关依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
默认的时候spring-boot-starter-data-redis使⽤的Redis⼯具是Lettuce,但是你要改成Jedis,只要去除Lettuce引⽤Jedis,其他不变。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<!--去除Lettuce-->
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--引⽤Jedis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
2.配置Redis
接下来我们只要在配置⽂件application.properties中配置Redis连接信息就⾏。如:
spring.edis.password=l23@123 #redis的密码
springboot结构我们只要配置这2个,其他的springboot就能帮我们⾃动配置了,我们就能直接⽤了。如springboot的⾃动配置源码:
@Configuration
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
public RedisAutoConfiguration() {
}
@Bean
@ConditionalOnMissingBean(
name = {"redisTemplate"}
)
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException { RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
我们可以从这个注解@EnableConfigurationProperties({RedisProperties.class})看出springboot把我们的配置信息注⼊到RedisProperties中,从下⾯的2个Java配置⽅法可以看出,如果我们没有提供redisTemplate,stringRedisTemplate的实例,SpringBoot就会帮我们创建者2个实例。⽽这2个正是提供操作Redis的基本⽅法。
redisTemplate,stringRedisTemplate操作Redis
public class Book implements Serializable {
private Integer id;
private String name;
private String author;
//省略getter/setter
}
@Rest Controller public class BookController {
@Autowired
RedisTemplate redisTemplate;
@Autowired StringRedisTemplate stringRedisTemplate;
@GetMapping(”/testl”)
public void testl(){
//使⽤stringRedisTemplate
ValueOperations<String,String> opsl=stringRedisTemplate.opsForValue(); opsl.set(”name”,”三国演义”);//向Redis中存储⼀条记录
String (”name”); //将之读取出来
System.out.println(name);
//使⽤redisTemplate
ValueOperationsops2=redisTemplate.opsForValue();
Bookbl=newBook();
bl.setid(l);
bl.setName(”红楼梦”);
bl.setAuthor(”曹雪芹”);
ops2.set(”bl”,bl);//向Redis中存储⼀个对象
Bookbook=((”bl”); //将之读取出来
System.out.println(book);
}
}
StringRedisTemplate和RedisTemplate的区别
StringRedisTemplate是RedisTemplate的⼦类,StringRedisTemplate中的问和value都是字符串,采⽤
的序列化⽅案是StringRedisSerializer,⽽RedisTemplate则可以⽤来操作对象,RedisTemplate采⽤的序列化⽅案是JdkSerializationRedisSerializer。⽆论是StringRedisTemplate还是RedisTemplate,操作Redis的⽅法都是⼀致的.StringRedisTemplate和RedisTemplate都是通过opsForValue、opsForZSet或者opsForSet等⽅法⾸先获取⼀个操作对象,再使⽤该操作对象完成数据的读写。
⼆ SpringBoot整合Redis集
集和单机的差不多,但是默认的⾃动配置是单机的,就是配置类要我们⾃⼰配置,创建StringRedisTemplate和RedisTemplate,其他操作⽅法是⼀样的。
修改配置⽂件
由于有多个节点,我们最好⽤l的配置⽂件。
spring:
redis:
cluster:
ports:
-8001
-8002
-8003
-8004
-8005
-8006
host: 192.168.174.10
poolConfig:
max-total: 8
max-idle: 8
max-wait-millis: -1
min-idle: 0
我这⾥的集是在⼀台机器的,所以Ip就⼀个,⽽端⼝是⼀个数组,配置这样,我们等下好获取。
配置Reids信息,创建StringRedisTemplate和RedisTemplate
@Configuration
@ConfigurationProperties("dis.cluster") //
public class RedisConfig {
List<Integer> ports;
String host;
JedisPoolConfig poolConfig;
@Bean
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论