SpringBoot--統合のRedis

次のようにのpom.xmlのjarパッケージは、導入されています。

< 依存性> 
    < のgroupId > org.springframework.boot </ のgroupId > 
    < たartifactId >ばねブートスタータデータRedisの</ たartifactId > 
</ 依存>

プロジェクトの起動クラスを変更し、増加の注釈@EnableCaching、次のように、キャッシュ機能を開きます。

輸入org.springframework.boot.SpringApplication。
輸入org.springframework.boot.autoconfigure.SpringBootApplication。
輸入org.springframework.cache.annotation.EnableCaching。
輸入org.springframework.scheduling.annotation.EnableScheduling。

@SpringBootApplication 
@EnableScheduling 
@EnableCaching 
パブリック クラスSpringbootApplication { 

    公共 静的 ボイドメイン(文字列[]引数){ 
        SpringApplication.run(SpringbootApplication。クラス、引数)。
    } 
}

次のようにRedisの接続構成情報がapplication.properties:

#Redisのデータベースインデックス(デフォルトは0)
spring.redis.database = 0 
#Redisのサーバーアドレス
spring.redis.host = 172.31.19.222 
#のRedisサーバポート
= 6379 spring.redis.port 
#Redisのサーバー接続パスワード(デフォルトは空です)
spring.redis.password = 
#接続の接続プールの最大数(負の制限)の値ない
spring.redis.pool.maxを8-アクティブ= 
(負の値は制限をブロックしない#待ち時間接続プールの最大値)
spring.redis -1 =待機.pool.max 
#接続プールの最大アイドル接続
spring.redis.pool.max。8-IDLE = 
#最小接続プールのアイドル接続
spring.redis.pool.min-IDLE = 0 
#接続タイムアウト時間(ms)
spring.redis.timeout = 0

新しいクラスRedisのキャッシュ構成RedisConfig、として、次のとおりです。

輸入org.springframework.beans.factory.annotation.Value;
輸入org.springframework.cache.CacheManager;
輸入org.springframework.cache.annotation.CachingConfigurerSupport;
輸入org.springframework.cache.annotation.EnableCaching。
輸入org.springframework.context.annotation.Bean;
輸入org.springframework.context.annotation.Configuration。
輸入org.springframework.data.redis.cache.RedisCacheManager;
輸入org.springframework.data.redis.connection.RedisConnectionFactory。
輸入org.springframework.data.redis.core.RedisTemplate;
インポートorg.springframework.data.redis.core.StringRedisTemplate;
輸入org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; 

輸入com.fasterxml.jackson.annotation.JsonAutoDetect;
輸入com.fasterxml.jackson.annotation.PropertyAccessor;
輸入com.fasterxml.jackson.databind.ObjectMapper; 


/ ** 
 * Redisの缓存配置类
 * @author szekinwin 
 * 
 * / 
@Configuration 
@EnableCaching 
パブリック クラス RedisConfigは拡張CachingConfigurerSupport { 

    @value( "$ {spring.redis.host}" プライベート文字列のホストを、 
    @valueを("$ {spring.redis.port}" プライベート int型のポート。
    @value( "$ {spring.redis.timeout}" プライベート int型のタイムアウト。
    
    // 自定义缓存鍵生成策略
 //     @Bean
 //     パブリックするKeyGeneratorするKeyGenerator(){
 //         (新しいするKeyGeneratorを返す){
 //             @Override
 //             パブリックオブジェクトは、(オブジェクトのターゲット、java.lang.reflect.Methodオブジェクトメソッドを生成オブジェクト...のparams){
 //                 StringBufferのSB =新しいStringBufferを();
//                 sb.append(。target.getClass()のgetName());
//                sb.append(method.getName());
 //                 用(オブジェクトobj:paramsは){
 //                     sb.append(obj.toString());
 //                 }
 //                 リターンsb.toString();
 //             }
 / /         };
 //     }
     // キャッシュマネージャ
    @Bean 
     公共のCacheManagerのCacheManager(@SuppressWarnings( "rawtypes" )redisTemplate redisTemplate){ 
        RedisCacheManagerのCacheManager = 新しい新しいRedisCacheManager(redisTemplate);
         // キャッシュの有効期限を設定します
        cacheManager.setDefaultExpiration(10000 );
        返すのCacheManagerを。
    } 
    @Bean 
    公共 RedisTemplate <文字列、文字列> redisTemplate(RedisConnectionFactory工場){ 
        StringRedisTemplateテンプレート = 新しいStringRedisTemplate(工場)。
        setSerializer(テンプレート)。// 设置序列化工具
        template.afterPropertiesSet();
        リターンテンプレート。
    } 
     プライベート ボイドsetSerializer(StringRedisTemplateテンプレート){ 
            @SuppressWarnings({ "rawtypes"、 "未チェック" })
            Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = 新しい Jackson2JsonRedisSerializer(オブジェクト。クラス); 
            ObjectMapper OM = 新しいObjectMapper(); 
            om.setVisibility(PropertyAccessor.ALL、JsonAutoDetect.Visibility.ANY)。
            om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL)。
            jackson2JsonRedisSerializer.setObjectMapper(OM)。
            template.setValueSerializer(jackson2JsonRedisSerializer)。
     } 
}

新UserMapperは、次の通り:

輸入org.apache.ibatis.annotations.Delete;
輸入org.apache.ibatis.annotations.Insert;
輸入org.apache.ibatis.annotations.Mapper;
輸入org.apache.ibatis.annotations.Param;
輸入org.apache.ibatis.annotations.Select;
輸入org.apache.ibatis.annotations.Update;
輸入org.springframework.cache.annotation.CacheConfig;
輸入org.springframework.cache.annotation.CacheEvict。
輸入org.springframework.cache.annotation.CachePut;
輸入org.springframework.cache.annotation.Cacheable; 

輸入springboot.domain.User; 

@Mapper
@CacheConfig(cacheNames = "ユーザー" パブリック インターフェースUserMapper { 

    @Insert( "ユーザへの挿入(名前、年齢)の値(#{名前}、#{年齢})" INTアドユーザー(@Param( "名前")文字列Param( "年齢" @名前、)文字列の年齢)。
    
    @Select( "利用者から場所ID =#{ID} *選択" 
    @Cacheable(キー = "#1 P0" 
    ユーザーfindById(@Param( "ID" 文字列ID)。
    
    @CachePut(キー = "#1 P0" 
    @Update( "ID =#{ID}更新ユーザのセット名=#{名前}"
    
    trueを指定すると、メソッドの呼び出しは、すぐにすべてのキャッシュがクリアされます 
    @CacheEvict(キー=「#のP0」、allEntries = 真に
    @Delete(「ユーザーからの削除をWHERE上記ID上記= {上記ID上記}#」のボイド deleteById(@Param( "ID" 文字列ID); 
    
}

Redisのにキャッシュに@Cacheableクエリの結果、(キー=「#p0ない」)キーRedisのよう最初の引数を指定します。

  @CachePutは、キー、Redisのに同期して更新された結果を指定します

  @CacheEvict、すぐにメソッド呼び出しの後にキャッシュをクリアし、キー、削除キャッシュデータ、allEntries =真を指定します

  (6)のRedisサーバのインストールと起動のブログには、以下のアドレスを参照することができます前に、のような、Redisのサーバーを起動し、統合についていくためのサービス層とコントローラ層:

    http://www.cnblogs.com/gdpuzxs/p/6623171.html

  (7)設定のlog4jのログは、次の通り:

## LOG4J配置
log4j.rootCategory = DEBUG、STDOUT 
##控制台输出
log4j.appender.stdout = org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout 
log4j.appender.stdout。 layout.ConversionPattern =%D {YYYY-MM-DD HH:MM:SS、SSS}%5P%C {1}:%のL - %のm個の%nを

キャッシュの検証のRedis

  まず、我々は常にユーザーにデータテーブルを挿入し、次のように、データベースが表示されます。

  

  今、私たちは、ユーザーテーブルID = 24、コンソール出力ビューの摩擦は、次のようにどのようなデータを確認してください。

  

  コンソール出力は、我々は、データベースクエリの実装であることを知っているし、クエリ結果をキャッシュするのRedisを開きました。次のように次の我々は再びユーザテーブルID = 24でクエリデータは、コンソールを観察しました。

  

  コンソール出力情報とは、これは、データベースのクエリを実行しなかったことを知ることができますが、Redisのキャッシュからクエリ、およびクエリ結果を返します。次のように私たちは、情報のRedisを表示します。

  

  方法の使用注釈@Cacheable(キー=「#1 P0」)finduser方法は、Redisの内のキー値としてIDとについてです。我々は、データを更新するときに、それ以外の場合は、ダーティデータを照会します、キャッシュされたデータを更新する@CachePut(キー=「#P0に」)を使用する必要があります。

おすすめ

転載: www.cnblogs.com/jvStarBlog/p/11819434.html