インターネット技術の急速な発展とアプリケーションへの需要の増大に伴い、高い同時実行性とデータ処理の問題は、すべての開発者が直面しなければならない課題となっています。これに関連して、キャッシュとセッション管理がシステムのパフォーマンスと応答速度を向上させる鍵となっています。 Redis は、キャッシュ、セッション管理、キュー、その他の分野で広く使用されているオープンソースのメモリ内データ ストレージです。この記事では、Spring Boot を介して Redis を統合してキャッシュとセッション管理を実装する方法を紹介し、読者が Redis テクノロジーをより深く理解し、適用できるようにします。
1. Redis の概要
Redis (Remote Dictionary Server) は、キャッシュ、データベース、メッセージ ミドルウェアなどとして使用できるメモリベースのデータ構造サーバーです。 Redis は、文字列、ハッシュ、リスト、セット、順序付きセットなどを含む複数のタイプのデータ構造をサポートし、分散デプロイメント、マスター/スレーブ レプリケーション、その他の機能をサポートする豊富な API インターフェイスを提供します。キャッシュに関しては、Redis は高速かつ可用性の高いデータ読み取りサービスを提供し、システムのパフォーマンスと応答速度を大幅に向上させます。
2. Spring Boot は Redis を統合します
Spring Boot はアプリケーションを迅速に構築するためのフレームワークであり、Web アプリケーション、REST API、マイクロサービス、その他の種類のアプリケーションを迅速に構築するのに役立ちます。 Spring Boot は、多数のサードパーティのコンポーネントやツールを簡単に統合できる豊富なプラグインと拡張メカニズムを提供します。 Redis の統合に関して、Spring Boot には Spring Data Redis と Lettuce という 2 つの実装方法が用意されており、独自のニーズに応じて選択して構成できます。
Spring Data Redis は、Redis ベースのデータ アクセスと操作をサポートできる Spring Data の拡張モジュールです。 Spring Data Redis は、Redis に迅速にアクセスして操作するのに役立つ、シンプルで一貫性のある使いやすいプログラミング モデルを提供します。以下は、Spring Data Redis を使用して Redis を統合するためのサンプル コードです。
@Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } }
上の例では、@Configuration および @EnableCaching アノテーションを通じて Spring キャッシュ サポートを有効にし、@Bean アノテーションを通じて RedisTemplate のインスタンスを作成します。 RedisTemplate は、Redis にアクセスするために Spring Redis が提供するコアクラスで、接続ファクトリーやキー値シリアライザーなどのプロパティを設定できます。
Lettuce は Redis の高性能クライアントであり、非同期および同期操作をサポートし、より多くの機能オプションと優れたスケーラビリティを提供します。 Lettuce の設計目標は、高性能、高可用性、そして使いやすい Redis アクセス ソリューションを提供することです。以下は、Lettuce を使用して Redis を統合するためのサンプル コードです:
@Configuration public class RedisConfig { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.database}") private int database; @Bean public RedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); redisStandaloneConfiguration.setHostName(host); redisStandaloneConfiguration.setPort(port); redisStandaloneConfiguration.setDatabase(database); redisStandaloneConfiguration.setPassword(RedisPassword.of(password)); LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration); lettuceConnectionFactory.afterPropertiesSet(); return lettuceConnectionFactory; } @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; } }
上の例では、@Configuration アノテーションを通じて RedisConfig クラスを定義し、構成ファイル内の Redis のホスト アドレスとポート番号を取得しました。 @Value アノテーション、パスワード、データベース番号、その他の情報。次に、@Bean アノテーションを使用して RedisConnectionFactory のインスタンスを作成し、RedisStandaloneConfiguration を使用して Redis の接続情報と認証情報を設定しました。最後に、RedisTemplate の作成時に RedisConnectionFactory のインスタンスが挿入されます。
3. キャッシュとセッション管理における Redis の適用
Spring Boot を通じて Redis を統合した後、キャッシュとセッション管理のシナリオに Redis を適用して、システムのパフォーマンスと可用性をさらに向上させることができます。
Web アプリケーションでは、データをキャッシュすると、システムのパフォーマンスと応答速度が向上し、データベースの負荷と応答時間が軽減されます。高速メモリ データ ストレージとして、Redis はキャッシュ ストレージとしての使用に非常に適しています。システム内の特定のビジネス シナリオを通じて、Redis にキャッシュする必要があるデータを保存し、データの最適なエクスペリエンスとパフォーマンスを実現するためにキャッシュの有効期限を設定できます。
@Service public class UserService { @Autowired private RedisTemplate<String, Object> redisTemplate; @Autowired UserDao userDao; @Cacheable(value = "user", key = "#id", unless="#result == null") public User getUserById(String id) { User user = (User) redisTemplate.opsForValue().get(id); if(null == user){ user = userDao.getUserById(id); redisTemplate.opsForValue().set(id, user, 30, TimeUnit.MINUTES); } return user; } @CachePut(value = "user", key = "#user.id") public User updateUser(User user){ userDao.updateUser(user); return user; } @CacheEvict(value = "user", key = "#id") public void deleteUser(String id){ userDao.deleteUser(id); } }
上記の例では、UserService クラスを定義し、@Autowired を通じて RedisTemplate インスタンスを挿入し、@Cacheable、@CachePut、@CacheEvict アノテーションを使用してキャッシュされたデータの読み取り、更新、削除を設定しました。などが動作します。 get 操作では、必要なデータが Redis に存在しない場合、データベースからクエリが実行され、クエリの結果は 30 分の有効期限で Redis に保存されます。
セッション管理は Web アプリケーションの重要な部分であり、ユーザー情報を保護し、高品質のエクスペリエンスを提供するために不可欠です。 Redis は、分散セッション管理の実装と Redis へのセッション データの保存に役立ち、システムの可用性とセキュリティを向上させます。
@Configuration @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1200) public class SessionConfig { @Bean public LettuceConnectionFactory connectionFactory() { return new LettuceConnectionFactory(); } @Bean public HttpSessionIdResolver httpSessionIdResolver() { return HeaderHttpSessionIdResolver.xAuthToken(); } }
上記の例では、SessionConfig クラスを定義し、@EnableRedisHttpSession アノテーションを通じて Spring Session サポートを有効にし、@Bean アノテーションを通じて LettuceConnectionFactory のインスタンスを作成しました。 @Bean メソッドでは、独自のニーズに合わせて Redis 接続ファクトリーを構成および初期化できます。 HttpSession を作成するとき、Spring Session はセッションの損失と可用性の低下を避けるために、ローカル メモリではなく Redis にセッション データを保存します。
4.概要
Redis は、複数のアプリケーション シナリオで広く使用されている高性能のキャッシュおよびデータ ストレージ システムです。 Spring Boot の統合により、キャッシュとセッション管理に Redis を簡単に適用して、Web アプリケーションのパフォーマンスと可用性を向上させることができます。この記事では、Spring Boot で Redis を統合する 2 つの方法と、キャッシュとセッション管理における Redis のアプリケーションについて簡単に紹介します。
以上がSpring Boot は Redis を統合してキャッシュとセッション管理を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。