>  기사  >  데이터 베이스  >  springboot 통합 redis의 주석은 무엇입니까?

springboot 통합 redis의 주석은 무엇입니까?

PHPz
PHPz앞으로
2023-05-31 23:43:222341검색

    redis 소개:

    Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统
    (区别于MySQL的二维表格的形式存储。)。和Memcache类似,但很大程度补偿了Memcache的不
    足。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到
    内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所以Memcache的
    应用场景适用于缓存无需持久化的数据。而Redis不同的是它会周期性的把更新的数据写入磁盘或者把修
    改操作写入追加的记录文件,实现数据的持久化。
    Redis的特点:
    1,Redis读取的速度是110000次/s,写的速度是81000次/s;
    2,原子 。Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
    3,支持多种数据结构:string(字符串);list(列表);hash(哈希),set(集合);zset(有序集合)
    4,持久化,集群部署
    5,支持过期时间,支持事务,消息订阅

    종속성 소개:

    <!-- redis -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <!-- spring2.X集成redis所需common-pool2-->
    <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
    <version>2.6.0</version>
    </dependency>

    application.properties 파일 작성

    #redi配置
    spring.redis.host=ip地址
    spring.redis.port=端口号
    spring.redis.database=0
    spring.redis.password=密码
    spring.redis.lettuce.pool.max-active=20
    spring.redis.lettuce.pool.max-wait=1
    #最大阻塞等待时间(负数表示没有限制)
    spring.redis.lettuce.pool.max-idle=5
    spring.redis.lettuce.pool.min-idle=0
    # 关闭超时时间
    spring.redis.lettuce.shutdown-timeout=100

    구성 클래스 작성:

    @EnableCaching
    @Configuration
    public class RedisConfig extends CachingConfigurerSupport {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory
    factory) {
    RedisTemplate<String, Object> template = new RedisTemplate<>();
    RedisSerializer<String> redisSerializer = new StringRedisSerializer();
    Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new
    Jackson2JsonRedisSerializer(Object.class);
    ObjectMapper om = new ObjectMapper();
    om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
    om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
    jackson2JsonRedisSerializer.setObjectMapper(om);
    template.setConnectionFactory(factory);
    //key序列化方式
    template.setKeySerializer(redisSerializer);
    //value序列化
    template.setValueSerializer(jackson2JsonRedisSerializer);
    //value hashmap序列化
    template.setHashValueSerializer(jackson2JsonRedisSerializer);
    return template;
     }
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory factory) {
    RedisSerializer<String> redisSerializer = new StringRedisSerializer();
    Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new
    Jackson2JsonRedisSerializer(Object.class);
    //解决查询缓存转换异常的问题
    ObjectMapper om = new ObjectMapper();
    om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
    om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
    jackson2JsonRedisSerializer.setObjectMapper(om);
    // 配置序列化(解决乱码的问题),过期时间600秒
    RedisCacheConfiguration config =
    RedisCacheConfiguration.defaultCacheConfig()
     .entryTtl(Duration.ofSeconds(600))
     
    .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redi
    sSerializer))
     
    .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(ja
    ckson2JsonRedisSerializer))
     .disableCachingNullValues();
    RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
     .cacheDefaults(config)
     .build();
    return cacheManager;
     }
    }

    springboot용 redis 주석 소개

    (1) 캐시 @Cacheable

    에 따르면 반환된 결과는 캐시됩니다. 다음 요청 시 캐시가 있으면 캐시된 데이터를 직접 읽어서 반환하며, 캐시가 없으면 메서드가 실행되고 반환된 결과가 캐시에 저장됩니다. 일반적으로 쿼리 메서드에 사용됩니다.

    소스코드를 보면 속성값은 다음과 같습니다.

    springboot 통합 redis의 주석은 무엇입니까?

    (2) Cache @CachePut

    이 Annotation으로 표시된 메소드는 실행될 때마다 호출되며 그 결과는 다음과 같습니다. 지정된 캐시에 저장됩니다. 데이터베이스를 다시 쿼리하는 대신 응답 캐시에서 직접 데이터를 읽는 것도 또 다른 접근 방식입니다. 일반적으로 새로운 메소드를 추가하는 데 사용됩니다.

    소스 코드를 보면 속성 값은 다음과 같습니다

    springboot 통합 redis의 주석은 무엇입니까?

    (3) Cache @CacheEvict

    이 주석 플래그를 사용하는 메서드는 지정된 캐시를 삭제합니다. 일반적으로 업데이트 또는 삭제 메서드에서 소스 코드를 보는 데 사용됩니다. ​​​​속성 값은 다음과 같습니다.

    springboot 통합 redis의 주석은 무엇입니까?Query 사용

    : @Cacheable Annotation

    springboot 통합 redis의 주석은 무엇입니까?

    수정 및 삭제

    : @CacheEvict 주석 사용

    add: @CachePut 주석 사용

    위 내용은 springboot 통합 redis의 주석은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제