使用SpringBoot怎么对复述,进行集成来实现缓存

  介绍

本篇文章给大家分享的是有关使用SpringBoot怎么对复述,进行集成来实现缓存,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>复述,简介

复述是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件,复述的优势包括它的速度,支持丰富的数据类型,操作原子性,以及它的通用性。

<强>案例整合

<强> 1,在Maven pom。xml文件中加入复述,包

& lt; !——复述,比;   & lt; dependency>   & lt; groupId> org.springframework.boot   & lt; artifactId> spring-boot-starter-redis   & lt; version> $ {boot.version} & lt;/version>   & lt;/dependency>

2, SpringBoot配置文件中配置复述,连接(YAML方式配置)

春:   应用程序:   名称:spring-boot-redis   复述:   主持人:192.168.145.132   端口:6379   超时:20000   集群:   节点:192.168.211.134:7000、192.168.211.134:7001 192.168.211.134:7002   maxRedirects: 6   池:   max-active: 8   min-idle: 0   最大空闲:8   最大等待:1

解释:本配置采用复述一主三从的的配置方式来提高缓存的吞吐量

<强> 3,复述,配置类

@ configuration   公开课RedisConfig {      @ bean   公共RedisTemplate<对象,Object>redisTemplate (RedisConnectionFactory connectionFactory) {   Object> RedisTemplate<对象;,模板=new RedisTemplate<的在();   template.setConnectionFactory (connectionFactory);//使用Jackson2JsonRedisSerializer来序列化和反序列化复述,值的值   Jackson2JsonRedisSerializer序列化器=new Jackson2JsonRedisSerializer (Object.class);      objectmap mapper=new objectmap ();   mapper.setVisibility (PropertyAccessor。所有,JsonAutoDetect.Visibility.ANY);   mapper.enableDefaultTyping (ObjectMapper.DefaultTyping.NON_FINAL);   serializer.setObjectMapper(映射);      template.setValueSerializer(序列化器);//使用StringRedisSerializer来序列化和反序列化复述的关键值   模板。setKeySerializer(新StringRedisSerializer ());   template.afterPropertiesSet ();   返回模板;   }   }

解释:SpringBoot提供了对复述的自动配置功能,在RedisAutoConfiguration中默认为我们配置了JedisConnectionFactory(客户端连接),RedisTemplate以及StringRedisTemplate(数据操作模板),其中StringRedisTemplate模板只针对键值对都是字符型的数据进行操作,本示例采用RedisTemplate作为数据操作模板,该模板默认采用JdkSerializationRedisSerializer的二进制数据序列化方式,为了方便演示本示例采用Jackson2JsonRedisSerializer来序列化和反序列化复述的价值值,使用StringRedisSerializer来序列化和反序列化复述的关键值。

<强> 4,服务层应用缓存(注解方式)

@ Service   公开课PersonService {      @ autowired   私人PersonRepo PersonRepo;/* *   * @Cacheable应用到读取数据的方法上,先从缓存中读取,如果没有再从DB获取数据,然后把数据添加到缓存中   *除非表示条件表达式成立的话不放入缓存   * @param用户名   * @return   */@Cacheable(值=https://www.yisu.com/zixun/坝没А?键=" #根。targetClass + #用户名”,除非=" #结果eq零”)   公众人物getPersonByName(字符串的用户名){   人的人=personRepo.getPersonByName(用户名);   返回的人;   }/* *   * @CachePut应用到写数据的方法上,如新增/修改方法,调用方法时会自动把相应的数据放入缓存   * @param人   * @return   */@CachePut(值=坝没А?键=" #根。targetClass + #结果。用户名”,除非=" #人情商null”)   公众人物savePerson(人){   返回personRepo.savePerson(人);   }/* *   * @CacheEvict应用到删除数据的方法上,调用方法时会从缓存中删除对应的关键的数据   * @param用户名   * @return   */@CacheEvict(值=坝没А?键=" #根。targetClass + #用户名”,条件=" #结果情商真”)   公共布尔removePersonByName(字符串的用户名){   返回personRepo.removePersonByName(用户名)> 0;   }      公共布尔isExistPersonName(人){   返回personRepo.existPersonName(人)> 0;   }   }

<>强解释:

1,这里的缓存关键为简单的字符串组合,也可根据具体需要实现自定义的关键生成器,然后在注解中使用keyGenerator来引用。

2,春天缓存提供了一些供我们使用的?上下文数据,通过#来引用,具体可查看春官网:http://docs.spring。io/spring/docs/经常/spring-framework-reference/htmlsingle/# cache-spel-context。

使用SpringBoot怎么对复述,进行集成来实现缓存