Submit Search
Redisの特徴と活用方法について
Download as PPTX, PDF
63 likes
108,120 views
Yuji Otani
2017/05/26のDB比較セミナーで使用した資料です。 NoSQLであるRedisについて説明しています。
Technology
Read more
1 of 65
Download now
Downloaded 164 times
1
2
3
4
5
6
7
8
9
10
11
12
Most read
13
14
15
16
17
18
19
20
21
22
Most read
23
24
25
26
Most read
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
More Related Content
PDF
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
PDF
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
PPTX
本当は恐ろしい分散システムの話
Kumazaki Hiroki
PDF
開発速度が速い #とは(LayerX社内資料)
mosa siru
PDF
ナレッジグラフとオントロジー
University of Tsukuba
PDF
DockerとPodmanの比較
Akihiro Suda
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
世界一わかりやすいClean Architecture
Atsushi Nakamura
本当は恐ろしい分散システムの話
Kumazaki Hiroki
開発速度が速い #とは(LayerX社内資料)
mosa siru
ナレッジグラフとオントロジー
University of Tsukuba
DockerとPodmanの比較
Akihiro Suda
What's hot
(20)
PDF
webエンジニアのためのはじめてのredis
nasa9084
PDF
例外設計における大罪
Takuto Wada
PPTX
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
PDF
Linux女子部 systemd徹底入門
Etsuji Nakai
PDF
マイクロにしすぎた結果がこれだよ!
mosa siru
PPTX
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
PDF
Docker Compose 徹底解説
Masahito Zembutsu
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
PPTX
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
PPTX
分散システムについて語らせてくれ
Kumazaki Hiroki
PDF
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
PDF
いまさら聞けないselectあれこれ
lestrrat
PDF
TLS, HTTP/2演習
shigeki_ohtsu
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
PDF
PostgreSQLアンチパターン
Soudai Sone
PDF
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
webエンジニアのためのはじめてのredis
nasa9084
例外設計における大罪
Takuto Wada
関数型・オブジェクト指向宗教戦争に疲れたなたに送るGo言語入門
Tadahiro Ishisaka
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
Linux女子部 systemd徹底入門
Etsuji Nakai
マイクロにしすぎた結果がこれだよ!
mosa siru
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Docker Compose 徹底解説
Masahito Zembutsu
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
分散システムについて語らせてくれ
Kumazaki Hiroki
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
いまさら聞けないselectあれこれ
lestrrat
TLS, HTTP/2演習
shigeki_ohtsu
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
PostgreSQLアンチパターン
Soudai Sone
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Ad
Viewers also liked
(20)
PPTX
SKYDISCのIoTを支えるテクノロジー
Yuji Otani
PDF
大規模Redisサーバ縮小化の戦い
Yuto Komai
PDF
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
Ryota Watabe
PDF
Hazelcast Distributed Lock
Jadson Santos
PDF
Developing better debug_components
Tomoaki Imai
PDF
MySQL
paulowniaceae
PDF
並行処理初心者のためのAkka入門
Yoshimura Soichiro
PDF
Redisととあるシステム
Takehiro Torigaki
PDF
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
LINE Corporation
PPTX
NoSQL勉強会資料(2015/03/12@ヒカラボ )
Yuji Otani
PDF
リクルート流Elasticsearchの使い方
Recruit Technologies
PDF
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
LINE Corporation
PDF
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
PPTX
Redis勉強会資料(2015/06 update)
Yuji Otani
PPTX
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
mizugokoro
PDF
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
PDF
20170210 jawsug横浜(AWSタグ)
Toshihiro Setojima
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
leverages_event
PDF
サーバーレスの今とこれから
真吾 吉田
PDF
KPTの基本と、その活用法
ESM SEC
SKYDISCのIoTを支えるテクノロジー
Yuji Otani
大規模Redisサーバ縮小化の戦い
Yuto Komai
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
Ryota Watabe
Hazelcast Distributed Lock
Jadson Santos
Developing better debug_components
Tomoaki Imai
MySQL
paulowniaceae
並行処理初心者のためのAkka入門
Yoshimura Soichiro
Redisととあるシステム
Takehiro Torigaki
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
LINE Corporation
NoSQL勉強会資料(2015/03/12@ヒカラボ )
Yuji Otani
リクルート流Elasticsearchの使い方
Recruit Technologies
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
LINE Corporation
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
Redis勉強会資料(2015/06 update)
Yuji Otani
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
mizugokoro
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
20170210 jawsug横浜(AWSタグ)
Toshihiro Setojima
Node.js×mongo dbで3年間サービス運用してみた話
leverages_event
サーバーレスの今とこれから
真吾 吉田
KPTの基本と、その活用法
ESM SEC
Ad
Similar to Redisの特徴と活用方法について
(20)
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
PPTX
JDBCでつながるSaasの世界
CData Software Japan
PDF
Drupal + Japan IT 2017
Hidekazu Ikeda
PDF
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
Masato Mori
PDF
JPC2018[H4]マイクロソフトの Azure オープン ソース戦略とパートナー エコシステム
MPN Japan
PDF
Size class 20150521
Takeshi Sato
PPTX
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
Tomoyuki Sugita
PDF
AWS使ってみました
Sanehiko Yogi
PDF
Dockerで開発環境をデリバる
Daigou Harada
PDF
(続) Effective SQLite for Android
Shinobu Okano
PDF
Node-red 10本ノック(visual recognition apiを絡めて)
岡田 裕行
PPTX
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
Yuki Okada
PDF
Docker 再入門 2016 update
Shiojiri Ohhara
PDF
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
PDF
Railsで新規サービスを開発する際にやったこと
Jyunichi Kuriyama
PDF
RakSulのInternal API開発で gRPCを導入した話
nixiesan
PDF
Adobe xdモバイルアプリとの連携利用
Kazuma Sekiguchi
PPTX
ソニーでElectronアプリをリリースしてみた
Yasuharu Seki
PPTX
アプリ開発&チーム管理で役立った拡張機能
Masaki Suzuki
PPTX
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
Kaz Aiso
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
JDBCでつながるSaasの世界
CData Software Japan
Drupal + Japan IT 2017
Hidekazu Ikeda
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
Masato Mori
JPC2018[H4]マイクロソフトの Azure オープン ソース戦略とパートナー エコシステム
MPN Japan
Size class 20150521
Takeshi Sato
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
Tomoyuki Sugita
AWS使ってみました
Sanehiko Yogi
Dockerで開発環境をデリバる
Daigou Harada
(続) Effective SQLite for Android
Shinobu Okano
Node-red 10本ノック(visual recognition apiを絡めて)
岡田 裕行
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
Yuki Okada
Docker 再入門 2016 update
Shiojiri Ohhara
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
Railsで新規サービスを開発する際にやったこと
Jyunichi Kuriyama
RakSulのInternal API開発で gRPCを導入した話
nixiesan
Adobe xdモバイルアプリとの連携利用
Kazuma Sekiguchi
ソニーでElectronアプリをリリースしてみた
Yasuharu Seki
アプリ開発&チーム管理で役立った拡張機能
Masaki Suzuki
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
Kaz Aiso
More from Yuji Otani
(20)
PPTX
Hack/HHVMの最新事情とメイン言語に採用した理由
Yuji Otani
PPTX
「技術のインテリジェンスを創る」をどうやって実現するか
Yuji Otani
PPTX
Why choose Hack/HHVM over PHP7
Yuji Otani
PPTX
PHP7ではなくHack/HHVMを選ぶ理由
Yuji Otani
PPTX
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
Yuji Otani
PPTX
PHP7がリリースされたいま、 改めてHackについて考える。
Yuji Otani
PPTX
FuelPHP × HHVM サービス開発事例
Yuji Otani
PPTX
Hack言語に賭けたチームの話
Yuji Otani
PPTX
スタートアップにおける技術チームの作り方
Yuji Otani
PPTX
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Yuji Otani
PPTX
Hack+FuelPHPによるWebサービス開発
Yuji Otani
PPTX
【初心者向け】Go言語勉強会資料
Yuji Otani
PPTX
Phalcon勉強会資料
Yuji Otani
PPTX
RDBとNoSQLの上手な付き合い方(勉強会@LIG 2013/11/11)
Yuji Otani
PPTX
【基礎編】社内向けMySQL勉強会
Yuji Otani
PPTX
Nginx勉強会
Yuji Otani
PPTX
PHP基礎勉強会
Yuji Otani
PPTX
負荷分散勉強会
Yuji Otani
PPTX
NoSQL勉強会
Yuji Otani
PPTX
Php5 4勉強会
Yuji Otani
Hack/HHVMの最新事情とメイン言語に採用した理由
Yuji Otani
「技術のインテリジェンスを創る」をどうやって実現するか
Yuji Otani
Why choose Hack/HHVM over PHP7
Yuji Otani
PHP7ではなくHack/HHVMを選ぶ理由
Yuji Otani
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
Yuji Otani
PHP7がリリースされたいま、 改めてHackについて考える。
Yuji Otani
FuelPHP × HHVM サービス開発事例
Yuji Otani
Hack言語に賭けたチームの話
Yuji Otani
スタートアップにおける技術チームの作り方
Yuji Otani
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Yuji Otani
Hack+FuelPHPによるWebサービス開発
Yuji Otani
【初心者向け】Go言語勉強会資料
Yuji Otani
Phalcon勉強会資料
Yuji Otani
RDBとNoSQLの上手な付き合い方(勉強会@LIG 2013/11/11)
Yuji Otani
【基礎編】社内向けMySQL勉強会
Yuji Otani
Nginx勉強会
Yuji Otani
PHP基礎勉強会
Yuji Otani
負荷分散勉強会
Yuji Otani
NoSQL勉強会
Yuji Otani
Php5 4勉強会
Yuji Otani
Redisの特徴と活用方法について
1.
Redisの特徴と 活用方法について 株式会社スカイディスク 大谷 祐司
2.
・株式会社スカイディスク CTO ・山口県下関出身 ・今年から福岡に移住してIoTやってます ・2児の父親です
3.
3自己紹介 マンガになりました。 雑誌に寄稿しました。 検索:大人になったらエンジニア 大谷
4.
本日はRedisについて、 特徴や事例など広くお話します。 Redisに興味を持ってもらえる きっかけになれば幸いです。
5.
Redisとは
6.
Redisは高速に値をRead/WriteできるNoSQLです。 ここ最近とてもメジャーになってきました。 単純なKVSとしての機能だけではなく、 様々な「便利に使える」仕組みを実装しています。
7.
Githubでオープンソースとして公開されています。 BSDライセンスです。
8.
Redisの歴史 2009年にSalvatore Sanfilippoというイタリアの 技術者によって開発されました。 2010年からVMWareが支援を行っています。 C言語で書かれています。
9.
AWSもRedisを提供 2013年9月からAWSのElastiCacheで採用。 Memcached or Redisを選択可能です。 ElastiCache
10.
Redisの特徴
11.
シングルスレッド Redisはシングルスレッドで動作します。 MySQLのように複数の処理を並列で行う事は不可能です。 必然的に、全てのデータ操作は排他的になります。 Redis コマンド コマンド コマンド コマンド 1スレッドで 順番に処理
12.
データベースの構造 Redis DB Key-Value Key-Value Key-Value Key-Value DB IDを指定して複数のDBを持つ事ができます。 各DBは独立してキーと値を保持できます。 Key-Value Key-Value Key-Value Key-Value
13.
高いパフォーマンス 全てのデータセットをメモリ内に読み込む 高速なデータアクセスを実現 ※メモリはHDDの数万倍早い。
14.
高いパフォーマンス 複数の操作を1回で実行可能 アプリケーション ⇔ Redis間の通信量を削減 コマンド コマンド コマンド 実行
15.
データ構造のサポート ・5種類の型を値として扱う事ができる。 ・値を計算して戻す事ができる。 ※LUAスクリプティング/セット型の集合演算 複雑なデータ構造の保持や計算を Redisに任せる事が可能
16.
メモリを使い果たしたら? 特定のルールに従って削除 LRUアルゴリズムなど、 5つのパターンから設定可能
17.
メモリを使い果たしたら? それでもメモリを確保できないときは、 書き込みが全てエラーになります。
18.
レプリケーション MASTER-SLAVEのレプリケーション構築が可能。 MASTERは複数台のSLAVEを設定できる。 MASTER SLAVE SLAVE SLAVE
19.
レプリケーション Redisのレプリケーションは非同期。 Master-Slaveでデータの差分が出る事がある。 データの特性によって参照先の選択が必要。
20.
データ永続化(バックアップ) ①SAVE/BGSAVE ⇒DBのフルダンプ(RDB = Redis
DataBase)を作成。 SAVE/BGSAVE Redis RDB 全データ
21.
データ永続化(バックアップ) ②AOF(Append Only File) ⇒コマンド実行ログ。ここからデータ復元可能。 コマンド Redis
AOF コマンド
22.
トランザクション 複数コマンドを纏めて実行 ・アトミックな操作の保証(他の処理をブロック) ・MULTIでトランザクション開始 ・全て実行(EXEC) or 全て未実行(DISCARD) MULTI コマンド コマンド コマンド EXEC(実行) DISCARD(未実行) or
23.
Slow-Logの出力 設定の閾値よりも遅いクエリをメモリに記録。 秒数を指定してSLOWLOGコマンドを実行 遅いクエリの一覧を取得
24.
コマンド実行状況の確認 MONITORコマンド実行 受け取ったコマンドを無限にダンプ (QUITコマンドで終了) コマンドの実行状況を把握できる。
25.
Luaスクリプティング スクリプト言語「Lua」をRedis上で実行可能。 予めRedisにスクリプトを登録する事ができる。 高度な計算をRedisで実行可能
26.
Luaスクリプティング 実行中は他のリクエストをブロックする。 時間が長い処理を行うのは危険。
27.
Redis Sentinel Redisプロジェクトで開発されている管理サーバ 死活監視/通知/自動フェイルオーバーを実現 V2.4.16以降で利用可能
28.
Redis-Cluster ・インスタンスのデータノード化 ・耐障害性 ・柔軟なスケーリング http://redis.io/topics/cluster-spec
29.
29 ・複数台で分散してデータを持つ(シャーディング) ・同じデータは複数台で持たない。 ・ノード毎にMaster-Slave構成が可能 (障害時はSlaveがMasterに自動で昇格) ・ノードを追加/削除した際にリシャーディンングが可能。 Redis Clusterの特徴
30.
30 ・ノードに0-16384の数字(slot)を割り振る。 ・リクエストのキーを計算して、対象のサーバを判別する。 [HASH_SLOT = CRC16(key)
mod 16384] クラスタリングの概要 [slot 0-5460] [slot 5461-10922] [slot 10923-16383] ①サーバを選んで命令 ②対象のサーバを判別して命令を転送 node1 node2 node3③命令を実行して結果を返す
31.
アーキテクチャ
32.
Redisのアーキテクチャ Redisはイベント駆動アーキテクチャで動作。 シングルスレッドでリクエストを処理します。
33.
Redisの動作イメージ 1プロセス/1スレッドで動作 Redis コマンド コマンド コマンド コマンド 1スレッドで 順番に処理
34.
Redisのアーキテクチャ 1台のサーバで複数コアを活用するには? 同一サーバに複数台のRedisを立ち上げ、 別サーバとして動かす事を推奨。 http://redis.io/topics/faq RedisはCPUの1コアのみを使用します。
35.
Redisのデータ型
36.
Redisには5つのデータ型があります。 各データ型について紹介します。
37.
文字列型 ・全てのデータの基本となる型。 ・バイナリセーフで、どんな値でも扱える。 ・最大1Gまで扱える。 Orange
38.
リスト型 ・文字列型のリスト。 ・先頭又は末尾に値の追加が可能。 ・リスト長をキャッシュして、高速に取得可能 Apple Orange Lemon
Kiwi Peach 1 2 3 4 5 値を順番に保持
39.
セット型 ・文字列型の順不同の集合。 ・同じメンバを重複して登録する事はできない。 ・2つのセットに集合演算が使用できる。 Apple Orange Lemon Kiwi Peach 値を順不同で保持
40.
セット型の集合演算用のコマンド 積集合(SINTER) A B
41.
和集合(SUNION) セット型の集合演算用のコマンド A B
42.
差集合(SDIFF) セット型の集合演算用のコマンド A B
43.
ソート済みセット型 ・文字列型の集合。 ・「スコア」の値でソートされた順位を持っている。 ・同じメンバを重複して登録する事はできない。 ・スコアの値、順位で範囲検索が可能。 Apple スコア :10 Orange スコア :30 Lemon スコア :50 Kiwi スコア :70 Peach スコア :90 1 2 3
4 5 値をスコアの大きさ順に保持
44.
同じスコアの場合の順位は? 同一順位が複数できるのではなく、 全ての値が別の順位になります。 (アスキーコード順にランク)
45.
ハッシュ型 ・順番がない文字列型のフィールドと値のマップ。 ・フィールド値での検索が可能。 ・値を指定しての検索は不可能。 Apple Orange Lemon Kiwi Peach A B C DE 値とキーをセットで保持
46.
最近の バージョンアップと機能追加
47.
Ver3.0リリース:2015年3月 ・ Redis Clusterへの対応。 ・
WAITコマンドの追加。 ・ LRUアルゴリズムの改善。
48.
Ver3.2リリース:2016年5月 ・GEO API導入(緯度/経度でインデックス) ・Luaスクリプティングのデバッガ ・Redis Cluster強化
49.
Ver4.0リリース準備中:(現時点でRC3) ・ 新しいレプリケーションの仕組み。 ・ LFUのキャッシュアルゴリズム。 →参照回数に基づくデータの維持 ・
RDBとAOFを合わせたバックアップファイル。 ・バックグラウンド処理を利用したデータ削除。
50.
Redisは進化し続けています
51.
Redisを使う方法
52.
Cliが用意されており、 コマンドで操作が可能です。
53.
53 多くの言語やフレームワークで Redis用のライブラリが存在します。
54.
AWSではElastiCacheとして利用できます。 フルマネージドで、マルチAZに対応しています。
55.
2016年10月からはRedis3.2に対応。 Clusterによるスケールアウトが可能に。
56.
Elasti Cache のパフォーマンス。 15シャードで最大3.5Tのメモリを利用可能。 各シャードは秒間2,000万読み込み、 450万書き込みの性能。
57.
Redisの活用事例
58.
複数サーバからネットワーク経由で利用できる Webアプリケーションのセッション たくさんのフレームワークで セッションストアとして採用されています。 expireを設定することで、セッションの自動的 な削除が可能です。
59.
RDBアクセスのキャッシュ 非常に高いRead/Writeのパフォーマンス RDBのデータをキャッシュとして保持。 複雑なSQLの実行で時間がかかるとき、 パフォーマンスアップに効果を発揮します。
60.
ゲームのランキングデータ User:A スコア :10 User:A スコア :50 User:A スコア :70 User:A スコア :90 1 3 4
5 ユーザランキング User:A スコア :30 プレイ結果 ソート済みセット型
61.
・「ユーザID」「スコア」をソート済みセットに登録。 ⇒スコア順のユーザランキングが生成される。 ・順位での検索、ユーザでの検索、スコアでの検索が可能。 ※RDBだとランク取得にorder_byが必要になり、処理が重い。 ゲームのランキングデータ
62.
IoTデータの一時データ保存先 センサーデバイス ゲートウェイ DBNW/APP
63.
最後に
64.
Redisは様々な機能をもったNoSQLです。 RDB等と組み合わせることで、パフォーマンスの高い アプリケーション構築を実現することができます。 ぜひ試してみてください。
65.
発表は以上になります。 ご清聴ありがとうございました。
Download