Submit Search
Upload
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
•
7 likes
•
4,864 views
N
Naohiro Yoshida
Follow
2015/08/28のjsugでの発表資料
Read less
Read more
Technology
Report
Share
Report
Share
1 of 21
Download now
Download to read offline
Recommended
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Toshiaki Maki
会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと
Recruit Technologies
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
chibochibo
Sbtのマルチプロジェクトはいいぞ
Sbtのマルチプロジェクトはいいぞ
Yoshitaka Fujii
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Yahoo!デベロッパーネットワーク
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Kentaro Yoshida
Recommended
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
JJUG CCC 2017 Spring Seasar2からSpringへ移行した俺たちのアプリケーションがマイクロサービスアーキテクチャへ歩み始めた
Koichi Sakata
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Reactive Webアプリケーション - そしてSpring 5へ #jjug_ccc #ccc_ef3
Toshiaki Maki
会社でClojure使ってみて分かったこと
会社でClojure使ってみて分かったこと
Recruit Technologies
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
chibochibo
Sbtのマルチプロジェクトはいいぞ
Sbtのマルチプロジェクトはいいぞ
Yoshitaka Fujii
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Elasticsearch 5.2とJava Clientで戯れる #elasticsearchjp
Yahoo!デベロッパーネットワーク
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Kentaro Yoshida
Azure <3 Openness
Azure <3 Openness
Keiji Kamebuchi
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Takuya Iwatsuka
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善
Takashi Honda
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Takuya Iwatsuka
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
Takakiyo Tanaka
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
Toru Makabe
Azure How to Learn &ゆるふわ雑談Q&A
Azure How to Learn &ゆるふわ雑談Q&A
Keiji Kamebuchi
GCP vs 他社クラウド
GCP vs 他社クラウド
Hasegawa Yusuke
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
sugiyama koki
コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
gree_tech
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発
Chihiro Ito
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
ScalaでDSP作ってみた
ScalaでDSP作ってみた
Jiro Hiraiwa
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
Kazuhiro Hara
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
Zabbix study
Zabbix study
Tomohiro Ikeda
Springでdao 20070413
Springでdao 20070413
Funato Takashi
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Hiroshi Ito
More Related Content
What's hot
Azure <3 Openness
Azure <3 Openness
Keiji Kamebuchi
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Takuya Iwatsuka
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Hiroshi Ito
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善
Takashi Honda
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Takuya Iwatsuka
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
Takakiyo Tanaka
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
Toru Makabe
Azure How to Learn &ゆるふわ雑談Q&A
Azure How to Learn &ゆるふわ雑談Q&A
Keiji Kamebuchi
GCP vs 他社クラウド
GCP vs 他社クラウド
Hasegawa Yusuke
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
sugiyama koki
コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
gree_tech
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発
Chihiro Ito
Spring I/O 2015 報告
Spring I/O 2015 報告
Takuya Iwatsuka
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
ScalaでDSP作ってみた
ScalaでDSP作ってみた
Jiro Hiraiwa
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
Kazuhiro Hara
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
kounan13
Zabbix study
Zabbix study
Tomohiro Ikeda
What's hot
(20)
Azure <3 Openness
Azure <3 Openness
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善
Spring I/O 2017 報告 ThymeleafのWebFlux対応
Spring I/O 2017 報告 ThymeleafのWebFlux対応
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
タイムマシン採用:明日のエンタープライズJavaの世界を予想する -Java EE7/クラウド/Docker/etc.-
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
Azure How to Learn &ゆるふわ雑談Q&A
Azure How to Learn &ゆるふわ雑談Q&A
GCP vs 他社クラウド
GCP vs 他社クラウド
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
Spark Streamingを使ってみた ~Twitterリアルタイムトレンドランキング~
コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Quarkus による超音速な Spring アプリケーション開発
Quarkus による超音速な Spring アプリケーション開発
Spring I/O 2015 報告
Spring I/O 2015 報告
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
ScalaでDSP作ってみた
ScalaでDSP作ってみた
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
Swagger jjug ccc 2018 spring
Swagger jjug ccc 2018 spring
Zabbix study
Zabbix study
Similar to Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
Springでdao 20070413
Springでdao 20070413
Funato Takashi
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
Hiroshi Ito
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし
Takayoshi Tanaka
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
土岐 孝平
SPARQLとMashup環境 (年岡先生)
SPARQLとMashup環境 (年岡先生)
Shun Shiramatsu
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Toshimichi Suekane
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
20141017 introduce razor
20141017 introduce razor
do_aki
Node.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
kamiyam .
React Native GUIDE
React Native GUIDE
dcubeio
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
ssuser3a4b8c
scala+liftで遊ぼう
scala+liftで遊ぼう
youku
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
Mitsutoshi Kiuchi
Python / R で使うSAS Viya
Python / R で使うSAS Viya
SAS Institute Japan
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
Iwana Chan
Telemetryについて
Telemetryについて
tetsusat
Similar to Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
(20)
Springでdao 20070413
Springでdao 20070413
Reladomo in Scala #scala_ks
Reladomo in Scala #scala_ks
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
20170422 azure portal cli 使いこなし
20170422 azure portal cli 使いこなし
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Spring3.1概要 データアクセスとトランザクション処理
Spring3.1概要 データアクセスとトランザクション処理
SPARQLとMashup環境 (年岡先生)
SPARQLとMashup環境 (年岡先生)
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Retina対応 CSSスプライトを自動化しよう sprity版(東区フロントエンド勉強会 2015年 第2回) 補足資料
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
20141017 introduce razor
20141017 introduce razor
Node.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
React Native GUIDE
React Native GUIDE
C base design methodology with s dx and xilinx ml
C base design methodology with s dx and xilinx ml
scala+liftで遊ぼう
scala+liftで遊ぼう
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
9/16 Tokyo Apache Drill Meetup - drill vs sparksql
Python / R で使うSAS Viya
Python / R で使うSAS Viya
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
社内勉強会資料(Varnish Module)
社内勉強会資料(Varnish Module)
Telemetryについて
Telemetryについて
Recently uploaded
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Shota Ito
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
osamut
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
Atomu Hidaka
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
iPride Co., Ltd.
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
furutsuka
Recently uploaded
(9)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
Spring Framework / Boot / Data 徹底活用 〜Spring Data Redis 編〜
1.
Spring Framework /
Boot / Data 徹底活用 August 28, 2015 Spring in Summer 夏なのにSpring ! Naohiro Yoshida Recruit Technologies Co.,Ltd. ∼Spring Data Redis 編∼
2.
自己紹介 (def me {:name
"吉田 尚弘" :job "アーキテクト" :lang ["Java" "Clojure" "Scala" "golang"] :spring-‐use {"流通系企業基幹システム" "高校生向け学習アプリAPIサーバ"})
3.
リクルートにおけるSpringへの取り組み ■ リクルートでは全社標準FWとしてSpringの採用を決定 ■ 専門部隊で検証やサイトへの適用を進めている 学んだプラクティスについては随時ブログや勉強会等で公開予定 ! ! ! ! ! ! API/バックエンド Spring Boot Spring Framework Spring
XXX 独自LIB ! フロントエンド node.js
4.
! ! ! ! ! ! ! ! ! API/バックエンド 本日の内容 Spring BootでのSpring Data
Redisの使い方と プラクティス Spring Boot Spring Framework Spring Rabbit Spring Boot Autoconfigure Spring JMS Spring Boot Actuator Spring Data Redis Spring Data Elasticsearch Spring ・・・
5.
Spring Data Redis ■ SpringでRedisを操作するためのライブラリ ■ JedisのローレベルAPIを使うのではなく利用しやすいTemplateを提供している ! @Autowired private
RedisTemplate<Object, Object> redisTemplate; ! public void access() { // value redisTemplate.opsForValue().set(key, System.currentTimeMillis()); Object value = redisWriterTemplate.opsForValue().get(key); // list redisTemplate.opsForList().rightPush(key, value); value = redisWriterTemplate.opsForList().leftPop(key); // expire Date expireAt = DateUtils.addHours(dateSupplier.get(), 1); redisTemplate.expireAt(key, expireAt); }!
6.
Spring Data Redis ∼Cache利用∼ ■ RedisCacheManagerを利用することでspring-contextのCache機構と連携可 @Configuration @EnableCaching public
class RedisConfiguration extends CachingConfigurerSupport { ! @Bean @Autowired public CacheManager cacheManager( RedisTemplate<Object,Object> redisTemplate){ RedisCacheManager manager = new RedisCacheManager(redisTemplate); ! //有効期限設定 (not required) Map<String, Long> expires = new HashMap<String, Long>(); expires.put("cache.expire.180", new Long(3 * 60)); manager.setExpires(expires); return manager; } }
7.
Spring Data Redis ∼Cache利用∼ //
RedisCacheManagerで指定したexpiresのkeyをvalue属性に // 指定することにより有効期限が設定される、expiresにないvalue属性の場合は無期限 @Override @Cacheable(value = "cache.expire.180", key = "'cache.master.seatTypes'") public List<CodeAndName> selectSeatTypes() { return selectList("sqlfilename"); } ! // この場合redisでのkeyは //「cache.master.selectRailroad/ + 引数のrailroadCode値」 @Cacheable(value = "cache.permanent.selectRailroad", key = "'cache.master.selectRailroad/' + #railroadCode") public CodeAndName selectRailroad(String railroadCode) { return selectOne("sqlfilename", railroadCode); } ■ キャッシュとして戻り値を保持したいメソッドにCachableアノテーションを定義 ■ Redisに存在しない場合のみメソッドの中身が呼び出される ■ 下のコードはSQL実行結果をキャッシュとしてRedisに乗せる例
8.
Spring Boot Application Spring
Bootで利用するには ■ spring-boot-starter-redisとspring-boot-autoconfigureを依存関係に追加するだけ ■ RedisAutoConfigurationがRedisTemplate作成する ■ とりあえず使ってみるのは非常に簡単 Jedis RedisTemplate アプリケーションコード Redis Properties RedisAuto Configuration Redis spring: data: redis: host: localhost port: 6379 pool: max-active:20 application.yml
9.
これだけでは実用には耐えられない
10.
Redisの構成の選択肢 ∼Redis Cluster∼ ■ 擬似的なMulti Master構成、最低3台のMaster
Nodeが必要 ■ データがシャーディングされNode毎に別のデータを保持 ■ 可用性をちゃんと考慮すると6台のNodeが必要 Node1 !① ⑦ ⑨ Node2 !② ③ ⑥ Node 3 !④ ⑤ ⑧ それぞれ管理しているhash slotを教え合っている Node1 Slave Node2 Slave Node3 Slave Client 1.CLUSTER HINTS 2.hash slotと nodeの対応 3.対象ノードからGET
11.
Node 1 Node
2 Node 3 Redisの構成の選択肢 ∼Redis Sentinel∼ ■ Master判定専用のプロセス(sentinel)を用いたMaster/Slave構成 ■ 複数のsentinelによる投票によりMasterが決定される(複数クラスタ管理可) ■ 多数決によるMaster障害検知なので3台は必要 Redis Master Redis Slave #1 Redis Slave #2 Sentinel1 sentinel2 sentinel3 Client 1.Master 問い合わせ 2.Master Node の場所返却 3.データSET
12.
Redisの構成の選択肢 ∼Load Balancer∼ ! Load Balancer VIP1
VIP 2 Redis Master Redis Slave #2 Redis Slave #1 ■ LBにWrite用のVIPとRead用のVIPを用意 ■ クライアントからはVIPにアクセスしノードダウン/Master昇格を意識しない ■ Master 1台 / Slave 1台でも構成可能 Client SET GET Sentinel1 sentinel2 sentinel3 Master障害検知と 昇格の1手段として バックエンドで sentinelを利用する
13.
Springから使ってみる
14.
Spring + Redis
Cluster ■ Jedis 2.7.2からRedis Clusterにも安定版のRedis 3.0.Xに対応している ■ しかし現在Spring Data RedisはRedis Clusterに対応していない
15.
Spring Boot Application Spring
+ Redis Sentinel RedisTemplate Jedis Sentinel Pool JedisConnectionFactory Jedis Pool sentinel1 sentinel2 sentinel3 Redis Master ■ JedisSentinelPoolがsentinelプロセスからMasterのHostAndPort取得 ■ MasterのHost And Portを取得してMasterに接続 全sentinelから定期的に Maserの情報を取得 Maserに対してアクセス
16.
Spring Boot Application Spring
+ Redis Sentinel Master 判定 JedisSentinelPool JedisConnectionFactory ■ 起動時にSentinelに対する専用のListenerを生成してMasterのAddrを取得 ■ SentinelからのMaster変更を検知する毎にメモリ内のMasterのAddrを変更 ■ 起動時に最低1つのsentinelにアクセスできる必要がある Master Listener Master Listener Sentinel1 Sentinel2 Sentinel3 Master Listener Sentinelに対してsubscribe処理 Master情報を受け取る Sentinel数分のMasterListenerを それぞれ別スレッドで起動。 最初にget-master-addr-by-name でsentinelから直接masterの Host/Portを取得。ここで取得で きないと無限ループ Spring Boot Applicaton起動時
17.
■ Master判定された後はsentinelから切断された場合でも暫定的に利用可 ■ Masterが切り替わった時にはWriteが失敗する ■ sentinel復旧後は自動的に再接続 Spring + Redis
Sentinel Sentinel停止 Spring Boot Application Redis Template JedisSentinelPool JedisConnectionFactory JedisPool Redis Master MasterListenerが デフォルトで5秒に 一回接続試行 Master Listener Master Listener Master Listener Sentinel1 Sentinel2 Sentinel3
18.
Spring Boot Application RedisTemplate JedisConnectionFactory JedisPool Redis Master ■ Slave用のJedisConnectionFactoryを用意する必要がある。 ■ Slaveが複数になった場合の分散や生死状態の判定は別途仕組みが必要。 JedisConnection JedisPool Redis Slave Spring
+ Redis Sentinel Slaveへのアクセス Jedis Sentinel Pool sentinel1 sentinel2 sentinel3 ReadかWriteかに よって利用する ConnectionFactory を切り替える
19.
Spring Boot Application Spring
+ VIP JedisConnectionFactory JedisPool Redis Master Redis Slave #1 Redis Slave #2 Load Balancer VIP1 VIP 2 RedisTemplate JedisConnectionFactory JedisPool ■ 死活監視やアクセス分散をLBに委譲する ■ 読取用と書込用のJedisConnectionFactoryはそれぞれ必要
20.
キャッシュ用クラスタ ■ 複数Master/Slaveのクラスタ構成もRepository層以上からは透過 ■ 将来的なRedis Clusterへの移行時の影響を低減 ■ 標準では対応していないので拡張が必要 ->
現在RTCで開発中 Spring Boot Application Master Slave #1 Slave #2 RedisTemplate JedisConnection Factory JedisConnection Factory JedisConnection Factory JedisConnection Factory Load Balancer VIP1 VIP 2 VIP 3 VIP 4 Master Slave #1 Slave #2 一時データ用クラスタ ・キーのprefixなどでクラスタ判定 ・発行コマンドでWrite/Read判定 Spring + VIP Multiple JedisConnectionFactory
21.
まとめ ■ Spring Data RedisのRedisTemplateによりRedis操作は簡単 ■ Spring
Data RedisでのRedis Clusterは直接サポートされていない ■ 実運用に耐えるRedis構成に合わせるとある程度のカスタマイズが必要
Download now