springboot redis注解

在Spring Boot中使用Redis注解,可以方便地实现缓存功能,下面是详细的技术介绍:

1、引入依赖

springboot redis注解

在项目的pom.xml文件中添加spring-boot-starter-data-redis依赖:

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

2、配置Redis

在application.properties或application.yml文件中配置Redis连接信息:

application.properties
spring.redis.host=localhost
spring.redis.port=6379

或者

application.yml
spring:
  redis:
    host: localhost
    port: 6379

3、使用注解

在需要使用缓存的方法上添加@Cacheable注解,

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
@Service
public class UserService {
    @Cacheable(value = "user", key = "id")
    public User getUserById(Long id) {
        // 查询数据库操作
        return user;
    }
}

在这个例子中,当调用getUserById方法时,会先检查缓存中是否存在对应的数据,如果存在则直接返回缓存数据,否则执行方法体中的代码并将结果存入缓存。

springboot redis注解

4、自定义缓存配置

如果需要自定义缓存配置,可以在配置类中创建RedisTemplate和CacheManager Bean:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.concurrent.ConcurrentMapCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
@EnableCaching
public class RedisConfig {
    @Autowired
    private RedisConnectionFactory redisConnectionFactory;
    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }
    @Bean
    public CacheManager cacheManager() {
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(3600) // 缓存过期时间,单位秒
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
        return RedisCacheManager.builder(redisConnectionFactory)
                .cacheDefaults(redisCacheConfiguration)
                .transactionAware()
                .build();
    }
}

5、使用其他注解

除了@Cacheable注解外,还可以使用以下注解:

@CachePut:每次调用方法都会更新缓存,无论缓存是否存在。

@CacheEvict:删除缓存,可以指定删除某个缓存或所有缓存。

@Caching:组合多个缓存注解,实现更复杂的缓存逻辑。

springboot redis注解

相关问题与解答:

1、问题:如何在Spring Boot中使用Redis注解实现分布式锁

答案:可以使用@CachePut注解结合Redis的SETNX命令实现分布式锁,具体做法是在获取锁的方法上添加@CachePut注解,并设置key和value,当方法被调用时,会尝试将key-value存入缓存,如果成功则表示获取锁成功,否则表示锁已被其他线程持有,释放锁时,可以直接删除缓存中的key。

2、问题:如何自定义Redis序列化方式?

答案:可以在创建RedisTemplate时设置自定义的序列化方式,例如使用StringRedisSerializer作为key的序列化方式,使用GenericJackson2JsonRedisSerializer作为value的序列化方式,具体代码如下:

redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/287723.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-02-04 23:22
Next 2024-02-04 23:26

相关推荐

  • redis怎么查找缓存文件

    Redis 是一款开源的,基于内存的数据结构存储系统,它支持多种数据结构,包括字符串、哈希、列表、集合和有序集合,由于其高效的内存读写和丰富的功能,Redis 在各种应用场景中被广泛使用,特别是作为缓存系统,随着 Redis 数据的增长,我们可能会遇到需要查找特定缓存文件的情况,在本文中,我们将介绍如何在 Redis 中查找缓存文件,目录1. Redis 的文件系统2. 查找缓存文件的方法3.

    2023-12-27
    0122
  • redis怎么缓存整个数据库中的数据

    Redis是一个开源的,内存中的数据结构存储系统,可以用作数据库、缓存和消息中间件,它支持多种类型的数据结构,如字符串、哈希表、列表、集合和有序集合,在本文中,我们将介绍如何使用Redis缓存整个数据库,并提供一个详细的技术教程。1. 安装Redis我们需要在服务器上安装Redis,根据操作系统的不同,安装方法也有所不同,以下是在不同……

    2023-11-25
    0153
  • redis版本升级方式

    Redis是一款开源的内存数据结构存储系统,它支持多种数据结构,如字符串、哈希表、列表、集合等,Redis具有高性能、高可用、可扩展等特点,广泛应用于各种场景,随着时间的推移,Redis可能会遇到一些问题,例如性能下降、安全漏洞等,为了解决这些问题,Redis提供了版本升级功能,本文将介绍如何进行Redis的版本升级,在进行版本升级之前,首先需要了解Redis当前的版本,可以通过执行以下命令查

    2023-12-10
    0327
  • redis如何存储java对象

    Redis 如何保存 Java 对象在 Java 应用程序中,我们经常需要将 Java 对象存储到 Redis 数据库中,为了实现这一目标,我们需要使用序列化和反序列化技术,以下是关于如何在 Redis 中保存 Java 对象的详细步骤和技术介绍。1、序列化 Java 对象要将 Java 对象保存到 Redis 中,首先需要将其序列化……

    2024-02-02
    0139
  • 深入理解redis分布式锁和消息队列的关系

    Redis分布式锁用于确保多个客户端对共享资源的互斥访问,消息队列则用于异步处理和任务调度。两者结合可提高系统性能和稳定性。

    2024-05-21
    0123
  • Redis不同数据类型的命令语句详解

    Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件,Redis支持多种数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set),本文将详细介绍Redis不同数据类型的命令语句。1、字符串(String)字符串是Redis最基本的数据类型……

    2024-03-19
    0130

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入