Spring Cache:如何使用redis进行缓存数据?
Posted lurenjia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cache:如何使用redis进行缓存数据?相关的知识,希望对你有一定的参考价值。
简介
Spring Cache是一个缓存框架,实现了基于注解的缓存功能。
它提供了一层抽象,底层可以切换不同的cache实现,通过CacheManager接口统一不同的缓存技术。
使用不同的缓存技术只要实现对应CacheManager的接口即可,若不指定,则使用内置的基于Map的缓存。
使用
在springboot项目中的使用。
一、导入依赖
<!--缓存默认配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!--Redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
二、编写配置信息
spring:
cache:
redis:
time-to-live: 1800000 #缓存生效时间,毫秒
redis:
host: localhost
port: 6379
password: lurenjia
三、编写代码
1、启动类上
//开启缓存注解功能 @EnableCaching
2、查询数据方法上
/** * CachePut:把方法返回值放入缓存中 * value:缓存的分类 * key:缓存的key */ @CachePut(value = "userCache",key = "\'user:\'+#user.id") public User getById(User user) userService.getById(users); return user;
3、修改、删除数据的方法上
/** * CacheEvict:把指定缓存数据从缓存中删除 * value:缓存分类 * key:缓存的key */ @CacheEvict(value = "userCache",key = "\'user:\'+#id") public void updateUser(Long id) this.removeById(id);
4、查询数据方法上
/** * Cacheable:从缓存中取出指定数据,若数据不存在则执行方法,并把方法返回值写入缓存中 * value:缓存分类 * key:缓存key * condition:缓存条件,为true时才进行缓存,若不指定,则会缓存空数据。 * unless:不缓存条件,为true时不进行缓存。 */ @Cacheable(value = "userCahce",key = "\'user:\'+#id",condition = "#result !=null",unless = "#result ==null") public Users getById(Long id) Users users = this.getById(id); return users;
java spring boot应用程序中如何使用Redis Cache来存储数据?
【中文标题】java spring boot应用程序中如何使用Redis Cache来存储数据?【英文标题】:How to use Redis Cache to store the data in java spring boot application? 【发布时间】:2022-01-04 00:15:35 【问题描述】:我已经在 AWS 账户中运行了一个 Redis 缓存实例。 如何在我的 java 代码中使用 redis 实例 Endpoint 来使用 redis 实例来存储数据。
我不知道如何在 Java 中使用 Redis Cache。 请帮我解决这个问题。
【问题讨论】:
以github.com/redis/jedis开头 【参考方案1】:您可以通过包含以下依赖项来使用spring-data-redis
。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
然后指定属性如下:
spring.redis.database=0
spring.redis.host="Specify URL"
spring.redis.port=6379
spring.redis.password=mypass
spring.redis.timeout=60000
然后使用RedisTemplate
@Autowired
private RedisTemplate<Long, Book> redisTemplate;
public void save(Book book)
redisTemplate.opsForValue().set(book.getId(), book);
public Book findById(Long id)
return redisTemplate.opsForValue().get(id);
【讨论】:
谢谢@shrm。 我正在尝试您提供的这种方法。在 application.properties 中我必须填写 spring.redis.host="Specify URL", spring.redis.password=mypass。我必须在此处添加哪个主机名和密码? @Kakashi 属性名应该会给你一个提示。以上是关于Spring Cache:如何使用redis进行缓存数据?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot之集成Redis:Spring Cache + Redis