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 Cache 缓存解决方案

Spring Boot之集成Redis:Spring Cache + Redis

Spring Cache with Redis - 如果与 Redis 的连接失败,如何优雅地处理甚至跳过缓存

20springcloud如何使用spring-cache

20springcloud如何使用spring-cache

20springcloud如何使用spring-cache