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

福建seo网站湖南建设人力资源网 登录

福建seo网站,湖南建设人力资源网 登录,春节彩灯制作公司,服装网站推广方案当我们的应用程序需要频繁地读取和写入数据时,为了提高应用程序的性能,我们通常会使用缓存技术。Spring Boot 提供了一种简单而强大的缓存框架,它可以轻松地将数据缓存到 Redis 中。 在 Spring Boot 中可以在方法上简单的加上注解实现缓存。…

当我们的应用程序需要频繁地读取和写入数据时,为了提高应用程序的性能,我们通常会使用缓存技术。Spring Boot 提供了一种简单而强大的缓存框架,它可以轻松地将数据缓存到 Redis 中。

在 Spring Boot 中可以在方法上简单的加上注解实现缓存。

Redis 缓存配置

首先,您需要在您的项目中添加 Redis 的依赖。您可以将以下依赖添加到您的项目的 pom.xml 文件中:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

一旦 Redis 的依赖被添加,您需要配置 Redis 的相关信息。以下是一个示例 Redis 配置:

spring:redis:host: 127.0.0.1port: 6379password: database: 0

在上述配置文件中,host 和 port 属性指定了 Redis 服务器的主机名和端口号,password 属性用于指定 Redis 服务器的密码(如果有的话),而 database 属性则指定了 Redis 服务器使用的数据库编号。

Redis 的默认序列化器是 JdkSerializationRedisSerializer,但是在实际使用中,由于其序列化后的大小通常比较大,因此我们通常使用 StringRedisSerializer 或者 Jackson2JsonRedisSerializer 将缓存值序列化为字符串或者 JSON 格式。以下是一个自定义序列化器的示例:

@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();template.setConnectionFactory(connectionFactory);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));return template;}
}

在此示例中,我们通过自定义 Bean 配置了 RedisTemplate,使用 StringRedisSerializer 序列化 Redis 键,并使用 Jackson2JsonRedisSerializer 序列化 Redis 值为 JSON 格式。

Cacheable 注解

使用 Cacheable 注解来标记需要进行缓存的方法。以下是一个具有 Cacheable 注解的示例方法:

@Service
public class UserService {@Cacheable(value = "users", key = "#id")public User getUserById(Long id) {// 查询用户并返回}
}

在这个例子中,@Cacheable 注解用于标记 getUserById 方法,而 value 属性则用于指定缓存的存储区域的名称。由于我们正在使用 Redis 作为缓存,因此 Redis 中的 key 将由 Cacheable 注解中的 key 属性指定。在此示例中,key 属性设置为 “#id”,这意味着我们将使用方法参数 id 作为 Redis 缓存的键。

多参数 Cacheable 注解

在某些情况下,我们需要以多个参数作为 key 来缓存数据。此时,我们可以对 key 属性使用表达式 language(SpEL)来设置多个参数:

@Service
public class UserService {@Cacheable(value = "users", key = "#id + '_' + #name")public User getUserByIdAndName(Long id, String name) {// 查询用户并返回}
}

在上述示例中,我们使用了表达式语言(SpEL)将 id 和 name 两个参数组合成了一个 Redis 缓存键。

缓存的有效期

缓存的有效期实际上是一个非常重要的问题,对于缓存的性能和可靠性都有很大的影响。可以使用 @Cacheable 注解上的 expire 属性来设置缓存的过期时间。以下是一个设置缓存时效的示例:

@Service
public class UserService {@Cacheable(value = "users", key = "#id", expire = 600)public User getUserById(Long id) {// 查询用户并返回}
}

在此示例中,我们添加了一个名为 expire 的属性,该属性用于指定缓存的过期时间(以秒为单位)。在此示例中,我们设置了缓存过期时间为 600 秒,也就是 10 分钟。

缓存的清除 @CacheEvict

有时候,您需要清除 Redis 缓存中的某些数据,以便在下一次访问时重建缓存。在 Spring Boot 中,可以使用 @CacheEvict 注解来清除 Redis 缓存中的数据。以下是一个使用 @CacheEvict 注解的示例:

@Service
public class UserService {@Cacheable(value = "users", key = "#id")public User getUserById(Long id) {// 查询用户并返回}@CacheEvict(value = "users", key = "#id")public void deleteUserById(Long id) {// 删除用户并返回}@CacheEvict(value = "users", allEntries = true)public void deleteAllUsers() {// 删除所有用户并返回}
}

在此示例中,我们添加了删除单个用户和删除所有用户的两个方法,使用 @CacheEvict 注解来删除 Redis 缓存中的相应数据。请注意,我们设置了 allEntries 属性为 true,以删除所有缓存中的数据。

缓存的条件

有时候,您需要在某些特定条件下才进行缓存操作。例如,只有当用户年龄大于 18 岁时才进行缓存。在 Spring Boot 中,可以使用 @Cacheable、@CachePut 和 @CacheEvict 注解上的 condition 属性来设置缓存条件。以下是一个使用 condition 属性的示例:

@Service
public class UserService {@Cacheable(value = "users", key = "#id", condition = "#age > 18")public User getUserById(Long id, int age) {// 查询用户并返回}
}

在此示例中,我们添加了一个名为 condition 的属性,该属性用于指定缓存的条件。在此示例中,我们将 condition 属性设置为 “#age > 18”,这意味着只有当 age 大于 18 时,才进行缓存操作。

缓存管理

在实际使用中,应用程序缓存数据的管理也是非常重要的。Spring Boot 提供了一个名为 CacheManager 的接口,您可以使用它来创建并管理缓存对象。以下是一个使用 CacheManager 的示例:

@Configuration
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {@Bean@Overridepublic CacheManager cacheManager() {RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory()).cacheDefaults(RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10))).build();return cacheManager;}@Beanpublic RedisConnectionFactory redisConnectionFactory() {return new LettuceConnectionFactory("localhost", 6379);}
}

在此示例中,我们创建了一个名为 CacheConfig 的配置类,并使用 @EnableCaching 注解来开启缓存支持。然后,我们通过实现 CachingConfigurerSupport 接口,覆盖 cacheManager 方法,创建了一个 RedisCacheManager 对象,并将其返回。在此 RedisCacheManager 中,我们使用默认的 RedisCacheConfiguration 进行了一些配置,例如设置缓存的过期时间,同时指定了 Redis 的连接信息。

结语

在本文中,我们介绍了如何在 Spring Boot 应用程序中使用 Redis 进行缓存。我们介绍了如何通过自定义 RedisTemplate Bean 来配置自己的 Redis 序列化器,在 Cacheable 注解中指定缓存区域和缓存键,以及如何使用 @CacheEvict 方法来清除 Redis 缓存中的数据。同时,我们还展示了更高级的功能,例如使用 CacheManager 对象管理缓存。

http://www.yayakq.cn/news/533823/

相关文章:

  • 网站的推广方式深圳分销网站设计价格
  • dmoz提交网站网站色调搭配
  • 网站是怎么做排名的如何给公司做自己的网站
  • 织梦手机网站源码下载网站建设网站制作网页
  • 旅游网站排行榜前十名官网上海传媒公司介绍
  • 东莞网站建设设计唯品会的网站建设
  • 网站新闻发布后前台不显示百度网页浏览器
  • 上海低价网站建设兼职做海报网站
  • 建设网站要不要投资钱东道设计有限公司
  • 成品软件网站大全推荐网页设计是学什么的
  • 简单的网站怎样做centos lamp wordpress
  • 网站建设销售合作合同乐视网站建设目标
  • 拱墅网站建设制作做衣服接订单的网站
  • asp.net网站管理系统买个天猫店多少钱一个
  • 网站备案是否收费标准c2c概念
  • 凡科网站后台惠州app网站建设排行榜
  • 博客网站模板下载上海住房和城乡建设部网站
  • wordPress主题模板站wordpress网站怎么进去
  • 用什么工具建设网站装宽带需要多少钱
  • 网站设计公司 上欧洲大带宽服务器
  • 那里可以做网站的吗给自己的公司做网站怎么做好
  • 哪里可以建设网站网页游戏网络游戏
  • 企业建设网站价格单短链短网址在线生成工具
  • 韩国网站免费模板wordpress搭建cms
  • 网站名是域名吗国外logo设计网站推荐
  • 西安网站建设制作网站建设公司演讲稿
  • 文章类型网站皮皮果网站建设
  • 商城网站 前置审批WordPress网站属于什么网站
  • 比较冷门的视频网站做搬运企业网站建设需求书
  • 网站显示后台登陆链接北京营销策划公司有哪些