Spring Boot 統合 Redis の使用チュートリアル

ヒント: これは、シンプルで読みやすい Spring Boot 統合 Redis チュートリアルです。再度使用する前に、まずコンピュータに Redis サービスをダウンロードしてください。

目次

1. Redisとは何ですか

2. プロジェクトは Redis 関連の依存関係を統合します (ここで使用されるデフォルトのレタスは Redis クライアントとして使用され、jedis の導入を選択できます)

3. Redis 構成クラスを追加します

4. Redisキャッシュの使い方

4.1 Spring Boot キャッシュのアノテーション

 4.2 Redisサービスの開始

4.2 実装

要約する


1. Redisとは何ですか

2. プロジェクトは Redis 関連の依存関係を統合します (ここで使用されるデフォルトのレタスは Redis クライアントとして使用され、jedis の導入を選択できます)

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

3. Redis 構成クラスを追加します

@Configuration //配置类
@EnableCaching //开启缓存
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)) //设置缓存存在的时间 600s
                        .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
                        .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))
                        .disableCachingNullValues();
        RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
                .cacheDefaults(config)
                .build();
        return cacheManager;
    }


}

4. Redisキャッシュの使い方

まず、プロジェクト内のどこでキャッシュを使用する必要があるかを明確にする必要があります。一般に、フロントエンド ユーザーの訪問数は多くなります。また、フォアグラウンド データの変更はそれほど頻繁ではないため、より多くのクエリ操作が必要になります。したがって、データベースの負荷を軽減し、アクセス速度を向上させるために、フロントエンド関連 (ホームページなど) のデータを Redis キャッシュにキャッシュする必要があります。

4.1 Spring Boot キャッシュのアノテーション

(1) キャッシュ @Cacheable は
メソッドに従って返された結果をキャッシュし、次のリクエスト時にキャッシュが存在する場合はキャッシュされたデータを直接読み出して返し、キャッシュが存在しない場合はメソッドを実行して返された結果をキャッシュに格納します
查询方法一般的にインターネット上で使われます。
ソースコードを表示すると、プロパティ値は次のとおりです。

(2) キャッシュ @CachePut

このアノテーションが付けられたメソッドは毎回実行され、結果は指定されたキャッシュに保存されます。
他のメソッドでは、データベースにクエリを実行することなく、キャッシュされたデータを応答キャッシュから直接読み取ることができます。新增方法一般的にインターネット上で使われます。

(3) キャッシュ @CacheEvict

このアノテーション フラグを使用するメソッドは、指定されたキャッシュをクリアします。一般にソースコードを更新或者删除方法表示するために使用される属性値は次のとおりです。

 4.2 Redisサービスの開始

コンピューター上で Redis サービスを開始します

4.3 実装

 (1) ymlファイルにredis設定を追加

spring:
  redis:
    host: 192.168.101.132     #redis所在ip地址
    port: 6379
    password: root            #密码
    connect-timeout: 1800000  #连接redis超时时间,(过期时间是配在config类中的)
    database: 0
    #lettuce客户端用以连接redis
    lettuce:
      pool:
        max-active: 20        #lettuce最大连接数:能够同时建立的“最大链接个数”
        max-wait: 1           #lettuce 从连接池中获取Collection最大等待时间:单位ms
        max-idle: 5           #最大空闲数:空闲链接数大于maxIdle时,将进行回收
        min-idle: 0           #最小空闲数:低于minIdle时,将创建新的链接

データの最終的な一貫性を確保するために、クエリは最初にキャッシュからチェックされ、データが変更されているかどうかが確認されるためです。ここでは、変更、削除、追加などのメソッドに @CacheEvict アノテーションを追加することを選択します。上記のメソッドが実行されると、キャッシュが直接削除され、データベースからデータが取得されてキャッシュに追加されます。

好き

クエリ関連のメソッド:

    @Cacheable(value = "banner", key = "'selectIndexList'")
    @Override
    public List<CrmBanner> selectIndexList() {
        List<CrmBanner> list = baseMapper.selectList(new
        QueryWrapper<CrmBanner>().orderByDesc("sort"));
        return list;
    }

関連するメソッドを変更、削除、追加します。

    //CacheEvict用于更新或删除,allEntries属性清楚缓存
    @CacheEvict(value = "banner", allEntries=true)
    @Override
    public void updateBannerById(CrmBanner banner) {
   		 baseMapper.updateById(banner);
    }

最後に、テストしてみます。


要約する

ここまでで簡単な Redis の使い方は完了です

おすすめ

転載: blog.csdn.net/weixin_58403235/article/details/129895603