要約: Redis については、多くの友人がすでにそれについて聞いたことがあると思います。さらに、彼らはすでにそれを多くのプロジェクトに適用しています。そうです、これは現在業界で最も広く使用されているキャッシュ ミドルウェアの 1 つであり、最高のものの 1 つであると考えられます。この記事から、SpringBoot2.0 統合に基づいたマイクロサービス プロジェクトの基礎を築きます。そして真ん中を開く Redisの実戦道!
内容:この記事では、まずSpringBoot2.0で構築したプロジェクトをベースにキャッシュミドルウェアRedisを統合し、プロジェクトにRedisに関する共通設定情報を追加し、Redisに注入するテンプレート操作部品StringRedisTemplateとRedisTemplateをカスタマイズしていきます。簡単なデモを作成して、Redis の実戦の旅を始めましょう!
(1) もちろん、最初のステップは、以下に示すように、ミドルウェア Redis の依存 Jar を追加することです。
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.3.3.RELEASE</version>
</dependency>
次に、ホストやポートなどの基本情報を含む、Redis の共通の関連構成情報を構成ファイル application.properties に追加します。ここでは、 次の
#redis 单机配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=
spring.redis.jedis.pool.min-idle=100
spring.redis.jedis.pool.max-idle=300
spring.redis.jedis.pool.max-active=500
#集群配置
#spring.redis.cluster.nodes=127.0.0.1:6379,127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382
この設定ファイルでは、「接続プール」という概念も追加しました。このうち、接続プールで使用可能な接続の最小数は 100、使用可能な最大接続数は 300 です。動的に拡張できるため、最終的にはアクティブなリンクの数を 500 に増やす予定です。(500 が足りない場合は、ブロックして待つ必要があります。待機中に時間がデフォルト設定のタイムアウト時間を超えると、接続リセットまたは接続エラーと同様のエラーが報告されます。)
(2) 次に、統合して構築したプロジェクトを元に、Redisに注入した運用テンプレートコンポーネント、主にStringRedisTemplateとRedisTemplateをカスタマイズしていきます。
Spring+SpringMVC+Mybatis 統合プロジェクトなどの従来の Java Web プロジェクトでは、JedisUtil ツール クラスは通常、Jedis に基づいて直接カプセル化されており、これは DB データベースを操作するための以前の JDBCUtil の使用と似ていることに言及する価値があります。欠陥は非常に明らかです (リンクを手動で作成する必要がある、リンク リソースを閉じる必要があるなど)。
SpringBoot の出現により、「設定よりも規約が優先される」「起動時の依存関係」などの利点がもたらされ、これまで手動でリンクを作成したり閉じたりするなど、リソースを消費する可能性のある多くの操作が節約されます。つまり、SpringBoot に直接組み込まれています。 Redis. 開始依存関係が真ん中にあり、Redis をより便利に操作するために、SpringBoot は StringRedisTemplate と RedisTemplate という 2 つのテンプレート操作部品を直接カプセル化して提供します。以下に示すように、この 2 つのテンプレート操作部品をカスタム インジェクトします。その他のシリアル化に関する関連戦略:
/**
* @EnableCaching:开启缓存(注解生效的)
* redis的操作组件自定义注入配置
**/
@Configuration
@EnableCaching
public class RedisConfig {
@Autowired
private RedisConnectionFactory connectionFactory;
@Bean
public RedisTemplate redisTemplate(){
RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>();
redisTemplate.setConnectionFactory(connectionFactory);
//设置序列化策略
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
@Bean
public StringRedisTemplate stringRedisTemplate(){
StringRedisTemplate stringRedisTemplate=new StringRedisTemplate();
stringRedisTemplate.setConnectionFactory(connectionFactory);
return stringRedisTemplate;
}
}