Heim > Datenbank > Redis > Was sind die Anmerkungen für Springboot Integrated Redis?

Was sind die Anmerkungen für Springboot Integrated Redis?

PHPz
Freigeben: 2023-05-31 23:43:22
nach vorne
2410 Leute haben es durchsucht

    Einführung in 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,支持过期时间,支持事务,消息订阅
    Nach dem Login kopieren

    Abhängigkeiten einführen:

    <!-- 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>
    Nach dem Login kopieren

    Application.properties-Datei schreiben

    #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
    Nach dem Login kopieren

    Konfigurationsklasse schreiben:

    @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;
     }
    }
    Nach dem Login kopieren

    Einführung in Redis-Annotationen für Springboot

    (1) Cache @Cacheable

    Entsprechend zur Methode Das zurückgegebene Ergebnis wird bei der nächsten Anfrage zwischengespeichert, wenn der Cache vorhanden ist, werden die zwischengespeicherten Daten direkt gelesen und zurückgegeben, wenn der Cache nicht vorhanden ist, wird die Methode ausgeführt und das zurückgegebene Ergebnis im Cache gespeichert. Wird im Allgemeinen in Abfragemethoden verwendet.

    Sehen Sie sich den Quellcode an, die Attributwerte lauten wie folgt:

    Was sind die Anmerkungen für Springboot Integrated Redis?

    (2) Cache @CachePut

    Die mit dieser Annotation markierte Methode wird bei jeder Ausführung aufgerufen und das Ergebnis angezeigt im angegebenen Cache gespeichert werden. Anstatt die Datenbank erneut abzufragen, besteht ein weiterer Ansatz darin, die Daten direkt aus dem Cache der Antwort zu lesen. Wird im Allgemeinen zum Hinzufügen neuer Methoden verwendet.

    Sehen Sie sich den Quellcode an, die Attributwerte lauten wie folgt

    Was sind die Anmerkungen für Springboot Integrated Redis?

    (3) Cache @CacheEvict

    Die Methode, die dieses Annotationsflag verwendet, löscht den angegebenen Cache. Wird im Allgemeinen zum Anzeigen des Quellcodes in der Aktualisierungs- oder Löschmethode verwendet. Die Attributwerte lauten wie folgt:

    Was sind die Anmerkungen für Springboot Integrated Redis?

    Was sind die Anmerkungen für Springboot Integrated Redis?

    不能连接redis:
    (1)关闭liunx防火墙
    (2)找到redis配置文件:
    修改 protected-mode yes  改为  protected-mode no
    注释掉: bind 127.0.0.1
    Nach dem Login kopieren

    Test

    @Cacheable(value = "banner", key = "&#39;selectIndexList&#39;")
    @Override
    public List<CrmBanner> selectIndexList() {
    List<CrmBanner> list = baseMapper.selectList(new
    QueryWrapper<CrmBanner>().orderByDesc("sort"));
    return list;
     }
    
    @CacheEvict(value = "banner", allEntries=true)
    @Override
    public void removeBannerById(String id) {
    baseMapper.deleteById(id);
     }
    Nach dem Login kopieren

    in Redis:

    Was sind die Anmerkungen für Springboot Integrated Redis?

    Grundfunktionen:

    Abfrageverwendung : @Cacheable-Annotation

    Ändern und löschen: @CacheEvict-Annotation verwenden

    Hinzufügen: @CachePut-Annotation verwenden

    Das obige ist der detaillierte Inhalt vonWas sind die Anmerkungen für Springboot Integrated Redis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage