Accueil
Explorer
Soumettre la recherche
Mettre en ligne
S’identifier
S’inscrire
Publicité
Check these out next
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
マイクロサービス 4つの分割アプローチ
増田 亨
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
マイクロにしすぎた結果がこれだよ!
mosa siru
Linux女子部 systemd徹底入門
Etsuji Nakai
1
sur
65
Top clipped slide
Redisの特徴と活用方法について
30 May 2017
•
0 j'aime
60 j'aime
×
Soyez le premier à aimer ceci
afficher plus
•
98,636 vues
vues
×
Nombre de vues
0
Sur Slideshare
0
À partir des intégrations
0
Nombre d'intégrations
0
Télécharger maintenant
Télécharger pour lire hors ligne
Signaler
Technologie
2017/05/26のDB比較セミナーで使用した資料です。 NoSQLであるRedisについて説明しています。
Yuji Otani
Suivre
エンジニア à CIRCULATION
Publicité
Publicité
Publicité
Recommandé
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
95.3K vues
•
107 diapositives
AWSのログ管理ベストプラクティス
Akihiro Kuwano
75.2K vues
•
57 diapositives
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
86.3K vues
•
66 diapositives
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
22.9K vues
•
25 diapositives
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
12.8K vues
•
15 diapositives
Dockerからcontainerdへの移行
Akihiro Suda
5.8K vues
•
36 diapositives
Contenu connexe
Présentations pour vous
(20)
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
•
82.6K vues
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
•
3.1K vues
マイクロサービス 4つの分割アプローチ
増田 亨
•
40.4K vues
ソーシャルゲームのためのデータベース設計
Yoshinori Matsunobu
•
121.9K vues
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
•
3.4K vues
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
•
52.1K vues
マイクロにしすぎた結果がこれだよ!
mosa siru
•
131.4K vues
Linux女子部 systemd徹底入門
Etsuji Nakai
•
136K vues
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
Amazon Web Services Japan
•
55.5K vues
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
•
2.2K vues
コンテナネットワーキング(CNI)最前線
Motonori Shindo
•
30.7K vues
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
•
11.3K vues
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
•
25.4K vues
Fluentdのお勧めシステム構成パターン
Kentaro Yoshida
•
50.8K vues
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
•
138.9K vues
DockerとPodmanの比較
Akihiro Suda
•
42.4K vues
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
•
55.9K vues
例外設計における大罪
Takuto Wada
•
66.4K vues
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
•
29.4K vues
Docker Compose 徹底解説
Masahito Zembutsu
•
60.5K vues
Similaire à Redisの特徴と活用方法について
(20)
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
•
7.9K vues
JDBCでつながるSaasの世界
CData Software Japan
•
1.6K vues
Drupal + Japan IT 2017
Hidekazu Ikeda
•
520 vues
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
Masato Mori
•
9.5K vues
JPC2018[H4]マイクロソフトの Azure オープン ソース戦略とパートナー エコシステム
MPN Japan
•
536 vues
Size class 20150521
Takeshi Sato
•
559 vues
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
Tomoyuki Sugita
•
470 vues
AWS使ってみました
Sanehiko Yogi
•
1.9K vues
Dockerで開発環境をデリバる
Daigou Harada
•
2.3K vues
(続) Effective SQLite for Android
Shinobu Okano
•
3.1K vues
Node-red 10本ノック(visual recognition apiを絡めて)
岡田 裕行
•
3.2K vues
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
Yuki Okada
•
16K vues
Docker 再入門 2016 update
Shiojiri Ohhara
•
3.3K vues
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
•
18.2K vues
Railsで新規サービスを開発する際にやったこと
Jyunichi Kuriyama
•
1.3K vues
RakSulのInternal API開発で gRPCを導入した話
nixiesan
•
5.7K vues
Adobe xdモバイルアプリとの連携利用
Kazuma Sekiguchi
•
1K vues
ソニーでElectronアプリをリリースしてみた
Yasuharu Seki
•
5.1K vues
アプリ開発&チーム管理で役立った拡張機能
Masaki Suzuki
•
2.7K vues
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
Kaz Aiso
•
694 vues
Publicité
Plus de Yuji Otani
(20)
SKYDISCのIoTを支えるテクノロジー
Yuji Otani
•
7.4K vues
Hack/HHVMの最新事情とメイン言語に採用した理由
Yuji Otani
•
2.7K vues
「技術のインテリジェンスを創る」をどうやって実現するか
Yuji Otani
•
7K vues
Why choose Hack/HHVM over PHP7
Yuji Otani
•
3.8K vues
PHP7ではなくHack/HHVMを選ぶ理由
Yuji Otani
•
12K vues
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
Yuji Otani
•
9.1K vues
PHP7がリリースされたいま、 改めてHackについて考える。
Yuji Otani
•
9.5K vues
FuelPHP × HHVM サービス開発事例
Yuji Otani
•
5.1K vues
Hack言語に賭けたチームの話
Yuji Otani
•
4.2K vues
スタートアップにおける技術チームの作り方
Yuji Otani
•
17.4K vues
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Yuji Otani
•
9.8K vues
Hack+FuelPHPによるWebサービス開発
Yuji Otani
•
3.5K vues
【初心者向け】Go言語勉強会資料
Yuji Otani
•
36.9K vues
NoSQL勉強会資料(2015/03/12@ヒカラボ )
Yuji Otani
•
9.9K vues
Phalcon勉強会資料
Yuji Otani
•
8.9K vues
RDBとNoSQLの上手な付き合い方(勉強会@LIG 2013/11/11)
Yuji Otani
•
10.6K vues
Redis勉強会資料(2015/06 update)
Yuji Otani
•
52.3K vues
【基礎編】社内向けMySQL勉強会
Yuji Otani
•
6.5K vues
Nginx勉強会
Yuji Otani
•
14.3K vues
PHP基礎勉強会
Yuji Otani
•
9.2K vues
Dernier
(20)
SoftwareControl.pdf
ssusercd9928
•
15 vues
OIDC(OpenID Connect)について解説③
iPride Co., Ltd.
•
25 vues
Voyager: An Open-Ended Embodied Agent with Large Language Models
harmonylab
•
5 vues
【DL輪読会】DINOv2: Learning Robust Visual Features without Supervision
Deep Learning JP
•
56 vues
コードレビュー改善のためにJenkinsとIntelliJ IDEAのプラグインを自作してみた話
Rakuten Group, Inc.
•
10 vues
Forguncy製品概要.pptx
フォーガンシー
•
97 vues
量子論.pdf
hiro150493
•
8 vues
Windows ChatGPT Bing AI.pptx
Atomu Hidaka
•
7 vues
SoftwareControl.pdf
ssusercd9928
•
7 vues
統計学の攻略_統計的仮説検定の9パターン.pdf
akipii Oga
•
237 vues
統計学の攻略_推測統計学の考え方.pdf
akipii Oga
•
246 vues
通信プロトコルについて
iPride Co., Ltd.
•
7 vues
AIEXPO_CDLE名古屋紹介
KotaMiyano
•
4 vues
モバイル・クラウド・コンピューティング-データを如何に格納し、組み合わせ、情報として引き出すか
Masahiko Funaki
•
2 vues
Kubernetes超入門
Takashi Suzuki
•
5 vues
点群SegmentationのためのTransformerサーベイ
Takuya Minagawa
•
13 vues
ペンタエリスリトール市場.pdf
HinaMiyazu
•
3 vues
JSONEncoderで詰まった話
とん とんぼ
•
144 vues
20230601_Visual_IoTLT_vol14_kitazaki_v1.pdf
Ayachika Kitazaki
•
71 vues
ChatGPT + LlamaIndex 0 .6 による チャットボット の実装
Takanari Tokuwa
•
61 vues
Publicité
Redisの特徴と活用方法について
Redisの特徴と 活用方法について 株式会社スカイディスク 大谷 祐司
・株式会社スカイディスク CTO ・山口県下関出身 ・今年から福岡に移住してIoTやってます ・2児の父親です
3自己紹介 マンガになりました。 雑誌に寄稿しました。 検索:大人になったらエンジニア 大谷
本日はRedisについて、 特徴や事例など広くお話します。 Redisに興味を持ってもらえる きっかけになれば幸いです。
Redisとは
Redisは高速に値をRead/WriteできるNoSQLです。 ここ最近とてもメジャーになってきました。 単純なKVSとしての機能だけではなく、 様々な「便利に使える」仕組みを実装しています。
Githubでオープンソースとして公開されています。 BSDライセンスです。
Redisの歴史 2009年にSalvatore Sanfilippoというイタリアの 技術者によって開発されました。 2010年からVMWareが支援を行っています。 C言語で書かれています。
AWSもRedisを提供 2013年9月からAWSのElastiCacheで採用。 Memcached or Redisを選択可能です。 ElastiCache
Redisの特徴
シングルスレッド Redisはシングルスレッドで動作します。 MySQLのように複数の処理を並列で行う事は不可能です。 必然的に、全てのデータ操作は排他的になります。 Redis コマンド コマンド コマンド コマンド 1スレッドで 順番に処理
データベースの構造 Redis DB Key-Value Key-Value Key-Value Key-Value DB IDを指定して複数のDBを持つ事ができます。 各DBは独立してキーと値を保持できます。 Key-Value Key-Value Key-Value Key-Value
高いパフォーマンス 全てのデータセットをメモリ内に読み込む 高速なデータアクセスを実現 ※メモリはHDDの数万倍早い。
高いパフォーマンス 複数の操作を1回で実行可能 アプリケーション ⇔ Redis間の通信量を削減 コマンド コマンド コマンド 実行
データ構造のサポート ・5種類の型を値として扱う事ができる。 ・値を計算して戻す事ができる。 ※LUAスクリプティング/セット型の集合演算 複雑なデータ構造の保持や計算を Redisに任せる事が可能
メモリを使い果たしたら? 特定のルールに従って削除 LRUアルゴリズムなど、 5つのパターンから設定可能
メモリを使い果たしたら? それでもメモリを確保できないときは、 書き込みが全てエラーになります。
レプリケーション MASTER-SLAVEのレプリケーション構築が可能。 MASTERは複数台のSLAVEを設定できる。 MASTER SLAVE SLAVE SLAVE
レプリケーション Redisのレプリケーションは非同期。 Master-Slaveでデータの差分が出る事がある。 データの特性によって参照先の選択が必要。
データ永続化(バックアップ) ①SAVE/BGSAVE ⇒DBのフルダンプ(RDB = Redis
DataBase)を作成。 SAVE/BGSAVE Redis RDB 全データ
データ永続化(バックアップ) ②AOF(Append Only File) ⇒コマンド実行ログ。ここからデータ復元可能。 コマンド Redis
AOF コマンド
トランザクション 複数コマンドを纏めて実行 ・アトミックな操作の保証(他の処理をブロック) ・MULTIでトランザクション開始 ・全て実行(EXEC) or 全て未実行(DISCARD) MULTI コマンド コマンド コマンド EXEC(実行) DISCARD(未実行) or
Slow-Logの出力 設定の閾値よりも遅いクエリをメモリに記録。 秒数を指定してSLOWLOGコマンドを実行 遅いクエリの一覧を取得
コマンド実行状況の確認 MONITORコマンド実行 受け取ったコマンドを無限にダンプ (QUITコマンドで終了) コマンドの実行状況を把握できる。
Luaスクリプティング スクリプト言語「Lua」をRedis上で実行可能。 予めRedisにスクリプトを登録する事ができる。 高度な計算をRedisで実行可能
Luaスクリプティング 実行中は他のリクエストをブロックする。 時間が長い処理を行うのは危険。
Redis Sentinel Redisプロジェクトで開発されている管理サーバ 死活監視/通知/自動フェイルオーバーを実現 V2.4.16以降で利用可能
Redis-Cluster ・インスタンスのデータノード化 ・耐障害性 ・柔軟なスケーリング http://redis.io/topics/cluster-spec
29 ・複数台で分散してデータを持つ(シャーディング) ・同じデータは複数台で持たない。 ・ノード毎にMaster-Slave構成が可能 (障害時はSlaveがMasterに自動で昇格) ・ノードを追加/削除した際にリシャーディンングが可能。 Redis Clusterの特徴
30 ・ノードに0-16384の数字(slot)を割り振る。 ・リクエストのキーを計算して、対象のサーバを判別する。 [HASH_SLOT = CRC16(key)
mod 16384] クラスタリングの概要 [slot 0-5460] [slot 5461-10922] [slot 10923-16383] ①サーバを選んで命令 ②対象のサーバを判別して命令を転送 node1 node2 node3③命令を実行して結果を返す
アーキテクチャ
Redisのアーキテクチャ Redisはイベント駆動アーキテクチャで動作。 シングルスレッドでリクエストを処理します。
Redisの動作イメージ 1プロセス/1スレッドで動作 Redis コマンド コマンド コマンド コマンド 1スレッドで 順番に処理
Redisのアーキテクチャ 1台のサーバで複数コアを活用するには? 同一サーバに複数台のRedisを立ち上げ、 別サーバとして動かす事を推奨。 http://redis.io/topics/faq RedisはCPUの1コアのみを使用します。
Redisのデータ型
Redisには5つのデータ型があります。 各データ型について紹介します。
文字列型 ・全てのデータの基本となる型。 ・バイナリセーフで、どんな値でも扱える。 ・最大1Gまで扱える。 Orange
リスト型 ・文字列型のリスト。 ・先頭又は末尾に値の追加が可能。 ・リスト長をキャッシュして、高速に取得可能 Apple Orange Lemon
Kiwi Peach 1 2 3 4 5 値を順番に保持
セット型 ・文字列型の順不同の集合。 ・同じメンバを重複して登録する事はできない。 ・2つのセットに集合演算が使用できる。 Apple Orange Lemon Kiwi Peach 値を順不同で保持
セット型の集合演算用のコマンド 積集合(SINTER) A B
和集合(SUNION) セット型の集合演算用のコマンド A B
差集合(SDIFF) セット型の集合演算用のコマンド A B
ソート済みセット型 ・文字列型の集合。 ・「スコア」の値でソートされた順位を持っている。 ・同じメンバを重複して登録する事はできない。 ・スコアの値、順位で範囲検索が可能。 Apple スコア :10 Orange スコア :30 Lemon スコア :50 Kiwi スコア :70 Peach スコア :90 1 2 3
4 5 値をスコアの大きさ順に保持
同じスコアの場合の順位は? 同一順位が複数できるのではなく、 全ての値が別の順位になります。 (アスキーコード順にランク)
ハッシュ型 ・順番がない文字列型のフィールドと値のマップ。 ・フィールド値での検索が可能。 ・値を指定しての検索は不可能。 Apple Orange Lemon Kiwi Peach A B C DE 値とキーをセットで保持
最近の バージョンアップと機能追加
Ver3.0リリース:2015年3月 ・ Redis Clusterへの対応。 ・
WAITコマンドの追加。 ・ LRUアルゴリズムの改善。
Ver3.2リリース:2016年5月 ・GEO API導入(緯度/経度でインデックス) ・Luaスクリプティングのデバッガ ・Redis Cluster強化
Ver4.0リリース準備中:(現時点でRC3) ・ 新しいレプリケーションの仕組み。 ・ LFUのキャッシュアルゴリズム。 →参照回数に基づくデータの維持 ・
RDBとAOFを合わせたバックアップファイル。 ・バックグラウンド処理を利用したデータ削除。
Redisは進化し続けています
Redisを使う方法
Cliが用意されており、 コマンドで操作が可能です。
53 多くの言語やフレームワークで Redis用のライブラリが存在します。
AWSではElastiCacheとして利用できます。 フルマネージドで、マルチAZに対応しています。
2016年10月からはRedis3.2に対応。 Clusterによるスケールアウトが可能に。
Elasti Cache のパフォーマンス。 15シャードで最大3.5Tのメモリを利用可能。 各シャードは秒間2,000万読み込み、 450万書き込みの性能。
Redisの活用事例
複数サーバからネットワーク経由で利用できる Webアプリケーションのセッション たくさんのフレームワークで セッションストアとして採用されています。 expireを設定することで、セッションの自動的 な削除が可能です。
RDBアクセスのキャッシュ 非常に高いRead/Writeのパフォーマンス RDBのデータをキャッシュとして保持。 複雑なSQLの実行で時間がかかるとき、 パフォーマンスアップに効果を発揮します。
ゲームのランキングデータ User:A スコア :10 User:A スコア :50 User:A スコア :70 User:A スコア :90 1 3 4
5 ユーザランキング User:A スコア :30 プレイ結果 ソート済みセット型
・「ユーザID」「スコア」をソート済みセットに登録。 ⇒スコア順のユーザランキングが生成される。 ・順位での検索、ユーザでの検索、スコアでの検索が可能。 ※RDBだとランク取得にorder_byが必要になり、処理が重い。 ゲームのランキングデータ
IoTデータの一時データ保存先 センサーデバイス ゲートウェイ DBNW/APP
最後に
Redisは様々な機能をもったNoSQLです。 RDB等と組み合わせることで、パフォーマンスの高い アプリケーション構築を実現することができます。 ぜひ試してみてください。
発表は以上になります。 ご清聴ありがとうございました。
Publicité