Maison  >  Article  >  base de données  >  Quelles sont les annotations pour Redis intégré à Springboot ?

Quelles sont les annotations pour Redis intégré à Springboot ?

PHPz
PHPzavant
2023-05-31 23:43:222343parcourir

    redis introduction :

    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,支持过期时间,支持事务,消息订阅

    Introduction des dépendances :

    <!-- 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>

    Ecrire le fichier 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

    Classe de configuration d'écriture :

    @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;
     }
    }

    introduction à l'annotation Redis de Springboot

    (1) Cache @Cacheable

    Selon la méthode Le résultat renvoyé est mis en cache. Lors de la requête suivante, si le cache existe, les données mises en cache sont directement lues et renvoyées si le cache n'existe pas, la méthode est exécutée et le résultat renvoyé est stocké dans le cache. Généralement utilisé dans les méthodes de requête.

    Voir le code source, les valeurs des attributs sont les suivantes :

    Quelles sont les annotations pour Redis intégré à Springboot ?

    (2) Cache @CachePut# 🎜🎜#

    La méthode marquée de cette annotation sera appelée à chaque exécution et le résultat sera enregistré dans le cache spécifié. Au lieu d'interroger à nouveau la base de données, lire les données directement à partir du cache de la réponse est une autre approche. Généralement utilisé pour ajouter de nouvelles méthodes.

    Voir le code source, la valeur de l'attribut est la suivante

    Quelles sont les annotations pour Redis intégré à Springboot ? (3) Cache @CacheEvict#🎜 🎜#

    La méthode utilisant cet indicateur d'annotation effacera le cache spécifié. Généralement utilisé pour afficher le code source sur la méthode de mise à jour ou de suppression, la valeur de l'attribut est la suivante 🎜🎜 # test # 🎜 🎜 #
    不能连接redis:
    (1)关闭liunx防火墙
    (2)找到redis配置文件:
    修改 protected-mode yes  改为  protected-mode no
    注释掉: bind 127.0.0.1
    # 🎜🎜 ## 🎜🎜 # dans redis: # 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 # Fonctions de base: # 🎜🎜 #

    Requête en utilisant

     : @Cacheable annotation

    Quelles sont les annotations pour Redis intégré à Springboot ?Modifier et supprimer

     : Utiliser l'annotation @CacheEvict

    #🎜🎜 #Quelles sont les annotations pour Redis intégré à Springboot ? pour ajouter

     : utilisez l'annotation @CachePut

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer