springboot1.x集成redis单机版和集群版

叁歲伎倆 2022-02-28 18:22 323阅读 0赞

看了网上好多springboot中使用redis配置麻烦,实际上springboot开箱即用为我们做好了准备,简单方便又能扩展。
单机版:
1.pom.xml添加依赖

  1. <!-- springboot web 依赖的jar -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. <version>1.5.0.RELEASE</version>
  6. </dependency>
  7. <!--redis 这个依赖了jedis,spring-data-redis等 -->
  8. <dependency>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-data-redis</artifactId>
  11. </dependency>

2.application.yml 文件添加

  1. server:
  2. port: 8110
  3. spring:
  4. profiles:
  5. active: single
  6. application:
  7. name: service-redis

3.application-single.yml 此处为了区分单机和集群环境

  1. #单机版redis
  2. spring:
  3. redis:
  4. host: 127.0.0.1
  5. port: 6379
  6. #默认0
  7. database: 0
  8. #密码
  9. password:
  10. pool:
  11. #连接池最大连接数,使用负值表示没有限制
  12. max-active: 100
  13. #连接池中的最大空闲连接
  14. max-idle: 5
  15. #连接池最大阻塞等待时间(使用负值表示没有限制) 毫秒
  16. max-wait: 2000
  17. #连接池中的最小空闲连接
  18. min-idle: 1
  19. #连接超时时间(毫秒)
  20. timeout: 2000

4.在需要使用redis的地方直接注入RedisTemplate

  1. @RestController
  2. public class UserController {
  3. @Resource
  4. private RedisTemplate redisTemplate;
  5. @RequestMapping("/getUser")
  6. public String getUser(){
  7. return (String)redisTemplate.opsForValue().get("name");
  8. }
  9. @RequestMapping("/setUser")
  10. public String setUser(String name){
  11. redisTemplate.opsForValue().set("name",name);
  12. return "name:"+name;
  13. }
  14. }

集群版:
1.pom.xml依赖同单机版一样
2.application.yml 文件将环境改为cluster集群

  1. server:
  2. port: 8110
  3. spring:
  4. profiles:
  5. active: cluster
  6. application:
  7. name: service-redis

3.application-cluster.yml 集群环境配置信息

  1. spring:
  2. redis:
  3. #host:
  4. #port:
  5. #密码
  6. #password:
  7. pool:
  8. #连接池最大连接数,使用负值表示没有限制
  9. max-active: 100
  10. #连接池中的最大空闲连接
  11. max-idle: 5
  12. #连接池最大阻塞等待时间(使用负值表示没有限制) 毫秒
  13. max-wait: 2000
  14. #连接池中的最小空闲连接
  15. min-idle: 1
  16. #连接超时时间(毫秒)
  17. timeout: 2000
  18. cluster:
  19. nodes: 192.168.31.11:6378,192.168.31.11:6379,192.168.31.18:6378,192.168.31.18:6379,192.168.31.25:6378,192.168.31.25:6379
  20. max-redirects: 3

4.在需要使用redis的地方直接注入RedisTemplate,同单机版4一样
项目目录结构
在这里插入图片描述

redistemplate之所以能直接使用是springboot自动化装配,已经为我们实例化了这个实例
到此结果。


如果有需要我们可以扩展redistemplate

  1. /**
  2. * Created by lifeng on 2019/3/27.
  3. * 自定义redis的一些属性
  4. * 比如序列化和反序列化
  5. * 此类可以没有
  6. */
  7. @Configuration
  8. public class RedisConfig {
  9. /** 此处可能报错提示RedisConnectionFactory 类找不到,不影响运行*/
  10. @Bean
  11. public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
  12. RedisTemplate template = new RedisTemplate();
  13. template.setConnectionFactory(connectionFactory);
  14. //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
  15. Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);
  16. ObjectMapper mapper = new ObjectMapper();
  17. mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  18. mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  19. serializer.setObjectMapper(mapper);
  20. template.setValueSerializer(serializer);
  21. //使用StringRedisSerializer来序列化和反序列化redis的key值
  22. template.setKeySerializer(new StringRedisSerializer());
  23. template.afterPropertiesSet();
  24. return template;
  25. }
  26. }

发表评论

表情:
评论列表 (有 0 条评论,323人围观)

还没有评论,来说两句吧...

相关阅读