次のようにの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に」)を使用する必要があります。