Spring boot整合redis

ゝ一纸荒年。 2022-04-14 05:14 343阅读 0赞

Spring boot整合redis

Github源码:https://github.com/superRabbitMan/spring-boot-redis

本文基于spring提供的spring-data-redis整合spring boot和redis

引入依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-redis</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-web</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>com.google.code.gson</groupId>
  12. <artifactId>gson</artifactId>
  13. <version>2.8.5</version>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-test</artifactId>
  18. <scope>test</scope>
  19. </dependency>
  20. </dependencies>

配置yml配置文件,添加redis属性配置和配置Bean

  1. # Redis\u914D\u7F6E
  2. spring:
  3. redis:
  4. host: 172.16.94.138
  5. port: 7001
  6. jedis:
  7. pool:
  8. max-active: 8
  9. max-idle: 8
  10. min-idle: 0
  11. max-wait: -1
  12. @Configuration
  13. public class RedisConfig {
  14. @Bean
  15. public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
  16. StringRedisTemplate template = new StringRedisTemplate(factory);
  17. Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  18. ObjectMapper om = new ObjectMapper();
  19. om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  20. om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  21. jackson2JsonRedisSerializer.setObjectMapper(om);
  22. template.setValueSerializer(jackson2JsonRedisSerializer);
  23. template.afterPropertiesSet();
  24. return template;
  25. }
  26. @Bean
  27. public UserRedis userRedis() {
  28. return new UserRedis();
  29. }
  30. }

创建实体类

  1. public class User implements Serializable {
  2. private Long id;
  3. private String name;
  4. public Long getId() {
  5. return id;
  6. }
  7. public void setId(Long id) {
  8. this.id = id;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. }

创建UserRedis处理类

  1. @Repository
  2. public class UserRedis {
  3. @Autowired
  4. private RedisTemplate<String, String> redisTemplate;
  5. public void add(String key, Long time, User user) {
  6. Gson gson = new Gson();
  7. redisTemplate.opsForValue().set(key, gson.toJson(user), time, TimeUnit.MINUTES);
  8. }
  9. public void add(String key, Long time, List<User> users) {
  10. Gson gson = new Gson();
  11. redisTemplate.opsForValue().set(key, gson.toJson(users), time, TimeUnit.MINUTES);
  12. }
  13. public User get(String key) {
  14. Gson gson = new Gson();
  15. User user = null;
  16. String userJson = redisTemplate.opsForValue().get(key);
  17. if (!StringUtils.isEmpty(userJson)) {
  18. user = gson.fromJson(userJson, User.class);
  19. }
  20. return user;
  21. }
  22. public List<User> getList(String key) {
  23. Gson gson = new Gson();
  24. List<User> ts = null;
  25. String listJson = redisTemplate.opsForValue().get(key);
  26. if (!StringUtils.isEmpty(listJson)) {
  27. ts = gson.fromJson(listJson, new TypeToken<List<User>>(){}.getType());
  28. }
  29. return ts;
  30. }
  31. public void delete(String key) {
  32. redisTemplate.opsForValue().getOperations().delete(key);
  33. }
  34. }

启动类中添加访问方法

当然也可以使用JUnit去测试

  1. @RestController
  2. @SpringBootApplication
  3. public class SpringBootRedisApplication {
  4. @Autowired
  5. private UserRedis userRedis;
  6. public static void main(String[] args) {
  7. SpringApplication.run(SpringBootRedisApplication.class, args);
  8. }
  9. @RequestMapping(value = "/add")
  10. public String add() {
  11. User user = new User();
  12. user.setId(1L);
  13. user.setName("rabbit");
  14. userRedis.add("user", 10L, user);
  15. return new Gson().toJson(user);
  16. }
  17. @RequestMapping(value = "/adds")
  18. public String adds() {
  19. List<User> users = new ArrayList<>();
  20. for (int i = 0; i < 5; i++) {
  21. User user = new User();
  22. user.setId(1L * i);
  23. user.setName("rabbit" + "-" + i);
  24. users.add(user);
  25. }
  26. userRedis.add("users", 10L, users);
  27. return new Gson().toJson(users);
  28. }
  29. @RequestMapping(value = "/get/{key}")
  30. public String get(@PathVariable(name = "key") String key) {
  31. return new Gson().toJson(Optional.ofNullable(userRedis.get(key)).orElse(new User()));
  32. }
  33. @RequestMapping(value = "/del/{key}")
  34. public String del(@PathVariable(name = "key") String key) {
  35. User user = userRedis.get(key);
  36. userRedis.delete(key);
  37. return new Gson().toJson(user);
  38. }
  39. }

关注微信公众号(程序员小兔)不定期分享技术

20190711001357188.jpg

发表评论

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

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

相关阅读