当前位置: 首页 > news >正文

广西建设科技与建筑节能协会网站潍坊百度关键词优化

广西建设科技与建筑节能协会网站,潍坊百度关键词优化,好的宝安网站建设,东莞网站建设(推荐乐云践新)目录 前言 集成 maven依赖 CacheManagerConfig配置 redis配置 使用 Springboot 集成使用缓存 Cacheable CacheEvict 前言 现有项目中经常遇到的缓存集成问题,Springboot提供了统一的接口抽象与缓存管理器,可集成多种缓存类型,如 Co…

目录

前言

集成

maven依赖

CacheManagerConfig配置

redis配置

使用

Springboot 集成使用缓存

@Cacheable

@CacheEvict


前言

现有项目中经常遇到的缓存集成问题,Springboot提供了统一的接口抽象与缓存管理器,可集成多种缓存类型,如  ConcurrentMap 缓存、redis缓存,并可以随时无缝替换底层缓存存储。

集成

maven依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.3.0</version>
</dependency>

CacheManagerConfig配置

下面配置了2个,一个是localCacheManager,底层用的是ConcurrentMap,另一个是 RedisCacheManager,底层用的是redis。

通过 @Primary 注解,可以控制那个是主缓存。

@Configuration
@EnableCaching
@EnableConfigurationProperties(CacheProperties.class)
public class CacheManagerConfig {public static final String CACHE_MANAGER_LOCAL = "localCacheManager";public static final String CACHE_MANAGER_REDIS = "redisCacheManager";@Autowiredprivate CacheProperties cacheProperties;@Bean(name = CACHE_MANAGER_LOCAL)public CacheManager localCacheManager() {return new ConcurrentMapCacheManager();}@Primary@Bean(name = CACHE_MANAGER_REDIS)public RedisCacheManager redisCacheManager() {GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(cacheProperties.getRedis().getTimeToLive()).serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(stringRedisSerializer)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer));return RedisCacheManager.builder(jedisConnectionFactory()).cacheDefaults(config).build();}
}

redis配置

配置文件

spring:redis:host: 192.168.1.252port: 6379database: 1password: 123456cache:redis:time-to-live: 600s

redisconfig

    /*** jedis连接工厂* @return*/@Beanpublic JedisConnectionFactory jedisConnectionFactory() {RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();redisStandaloneConfiguration.setDatabase(redisProperties.getDatabase());redisStandaloneConfiguration.setPort(redisProperties.getPort());redisStandaloneConfiguration.setHostName(redisProperties.getHost());redisStandaloneConfiguration.setPassword(RedisPassword.of(redisProperties.getPassword()));JedisConnectionFactory factory = new JedisConnectionFactory(redisStandaloneConfiguration);return factory;}

redisTemplate

 @Bean(name = "redisTemplate")public RedisTemplate<String, Object> redisTemplate() {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();redisTemplate.setConnectionFactory(jedisConnectionFactory());Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);ObjectMapper objectMapper = new ObjectMapper();GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();redisTemplate.setDefaultSerializer(genericJackson2JsonRedisSerializer);objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(objectMapper);redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);redisTemplate.afterPropertiesSet();return redisTemplate;}

使用

注入cacheManager,并使用

    @Autowiredprivate CacheManager cacheManager;public void test() {Cache ca = cacheManager.getCache("userCache");ca.put("key", "value");ca.get("key");}

Springboot 集成使用缓存

@Cacheable

注解为 

@Cacheable 标记当前方法, 可将数据缓存与缓存,一般用于查询类方法

    @Cacheable(value = "firm", key = "#id", condition="#id!=null")public FirmBo getFirm(Long id) {return get(id);}

@CacheEvict

销毁缓存,一般用于编辑、新增或删除时候销毁缓存,下次查询时,会重新走数据库

​@CacheEvict(value = "person", key = "#person.id", condition = "#person.id!=null")public PersonBo savePerson(PersonBo person) {save(person);}

redis缓存存储实例

http://www.ds6.com.cn/news/78838.html

相关文章:

  • 注册好网站以后怎么做杭州seo百度关键词排名推广
  • 做一个网上商城网站建设费用多少钱百度搜索资源平台token
  • 国外做游戏的视频网站有哪些怎么开发网站
  • 用enfold做的网站东莞网络营销推广软件
  • 网站建设的架构浙江百度代理公司
  • 模板网站robots怎么做代写文章
  • 台州做网站优化怎样做企业宣传推广
  • 黄冈做网站公司百度ai智能写作工具
  • 网站构建建设网络营销网站设计
  • 如何做正规的采集网站成都网络营销
  • 政务公开与网站建设的矛盾手机怎么建自己的网站
  • 网络服务启动失败宁波优化推广选哪家
  • seo整站优化 wordpress营销策划的概念
  • 网站建设合同封面模板小程序开发公司排行榜
  • wordpress 社区模版合肥seo排名优化
  • 网站制作的关键技术西安网站seo外包
  • 十大设计网站沈阳网站seo公司
  • 网页设计html代码大全继承关系百度seo关键词排名查询
  • c#做的网站怎么上传图片女性广告
  • 如何找外包网站来做万能推广app
  • 上海网站群建设网站做seo教程
  • 罗湖网站建设价格seo整站优化哪家专业
  • 专业建设网站应该怎么做如何介绍自己设计的网页
  • 广州建网站开发seo型企业网站seo搜索引擎优化工资多少钱
  • 网站建设与实训嘉兴seo
  • 为什么做的网站要续费大连今日新闻头条
  • 河南企业网站建设全国疫情最新名单
  • 西安旅游网站开发今日军事新闻头条新闻
  • 做简单的html网站邯郸今日头条最新消息
  • 网站风格规划百度网站链接提交入口