Inicio
Explorar
Enviar búsqueda
Cargar
Iniciar sesión
Registrarse
Publicidad
Redisの特徴と活用方法について
Denunciar
Yuji Otani
Seguir
エンジニア en CIRCULATION
30 de May de 2017
•
0 recomendaciones
60 recomendaciones
×
Sé el primero en que te guste
ver más
•
98,561 vistas
vistas
×
Total de vistas
0
En Slideshare
0
De embebidos
0
Número de embebidos
0
Check these out next
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
マイクロサービス 4つの分割アプローチ
増田 亨
シリコンバレーの「何が」凄いのか
Atsushi Nakada
Dockerからcontainerdへの移行
Kohei Tokunaga
Dockerからcontainerdへの移行
Akihiro Suda
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
DBスキーマもバージョン管理したい!
kwatch
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
1
de
65
Top clipped slide
Redisの特徴と活用方法について
30 de May de 2017
•
0 recomendaciones
60 recomendaciones
×
Sé el primero en que te guste
ver más
•
98,561 vistas
vistas
×
Total de vistas
0
En Slideshare
0
De embebidos
0
Número de embebidos
0
Descargar ahora
Descargar para leer sin conexión
Denunciar
Tecnología
2017/05/26のDB比較セミナーで使用した資料です。 NoSQLであるRedisについて説明しています。
Yuji Otani
Seguir
エンジニア en CIRCULATION
Publicidad
Publicidad
Publicidad
Recomendados
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
22.3K vistas
•
40 diapositivas
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
143K vistas
•
45 diapositivas
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
95.1K vistas
•
107 diapositivas
Docker Compose 徹底解説
Masahito Zembutsu
60.5K vistas
•
123 diapositivas
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
40.9K vistas
•
27 diapositivas
マイクロにしすぎた結果がこれだよ!
mosa siru
131.3K vistas
•
32 diapositivas
Más contenido relacionado
Presentaciones para ti
(20)
フロー効率性とリソース効率性について #xpjug
Itsuki Kuroda
•
100.2K vistas
マイクロサービス 4つの分割アプローチ
増田 亨
•
40.3K vistas
シリコンバレーの「何が」凄いのか
Atsushi Nakada
•
182.8K vistas
Dockerからcontainerdへの移行
Kohei Tokunaga
•
15.3K vistas
Dockerからcontainerdへの移行
Akihiro Suda
•
5.7K vistas
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
•
28.7K vistas
DBスキーマもバージョン管理したい!
kwatch
•
57.3K vistas
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
•
64.1K vistas
暗号技術の実装と数学
MITSUNARI Shigeo
•
9.3K vistas
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
•
86.2K vistas
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
•
52.1K vistas
TLS, HTTP/2演習
shigeki_ohtsu
•
12.8K vistas
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
•
6.5K vistas
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
•
12.8K vistas
ChatGPT 人間のフィードバックから強化学習した対話AI
Shota Imai
•
96.7K vistas
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
Tokoroten Nakayama
•
120.5K vistas
DockerコンテナでGitを使う
Kazuhiro Suga
•
17K vistas
こわくない Git
Kota Saito
•
872.3K vistas
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
•
2.5K vistas
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
•
22.8K vistas
Destacado
(20)
SKYDISCのIoTを支えるテクノロジー
Yuji Otani
•
7.4K vistas
大規模Redisサーバ縮小化の戦い
Yuto Komai
•
37.6K vistas
OSS-DB Silver ポイント解説セミナー ~SQL編~ (PostgreSQL9.0)
Ryota Watabe
•
5K vistas
Hazelcast Distributed Lock
Jadson Santos
•
3.2K vistas
Developing better debug_components
Tomoaki Imai
•
5.8K vistas
MySQL
paulowniaceae
•
4.5K vistas
並行処理初心者のためのAkka入門
Yoshimura Soichiro
•
49.8K vistas
Redisととあるシステム
Takehiro Torigaki
•
9K vistas
Akka ActorとAMQPでLINEのメッセージングパイプラインをリプレースした話
LINE Corporation
•
10.5K vistas
NoSQL勉強会資料(2015/03/12@ヒカラボ )
Yuji Otani
•
9.9K vistas
リクルート流Elasticsearchの使い方
Recruit Technologies
•
27.3K vistas
HBaseとRedisを使った100億超/日メッセージを処理するLINEのストレージ
LINE Corporation
•
18.2K vistas
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
•
38.1K vistas
Redis勉強会資料(2015/06 update)
Yuji Otani
•
52.3K vistas
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
mizugokoro
•
29.3K vistas
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
真吾 吉田
•
16.5K vistas
20170210 jawsug横浜(AWSタグ)
Toshihiro Setojima
•
22.6K vistas
Node.js×mongo dbで3年間サービス運用してみた話
leverages_event
•
19.2K vistas
サーバーレスの今とこれから
真吾 吉田
•
35.2K vistas
KPTの基本と、その活用法
ESM SEC
•
128K vistas
Publicidad
Similar a Redisの特徴と活用方法について
(20)
Ruby on Rails を用いたWEBアプリケーションの開発
Koichi Shimozono
•
7.9K vistas
JDBCでつながるSaasの世界
CData Software Japan
•
1.6K vistas
Drupal + Japan IT 2017
Hidekazu Ikeda
•
520 vistas
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
Masato Mori
•
9.5K vistas
JPC2018[H4]マイクロソフトの Azure オープン ソース戦略とパートナー エコシステム
MPN Japan
•
536 vistas
Size class 20150521
Takeshi Sato
•
559 vistas
フルリモート2ヶ月 やって編み出した コミュニケーションのコツ
Tomoyuki Sugita
•
470 vistas
AWS使ってみました
Sanehiko Yogi
•
1.9K vistas
Dockerで開発環境をデリバる
Daigou Harada
•
2.3K vistas
(続) Effective SQLite for Android
Shinobu Okano
•
3.1K vistas
Node-red 10本ノック(visual recognition apiを絡めて)
岡田 裕行
•
3.2K vistas
サイボウズのオープンソースへの取り組み - OSC 2018 Osaka
Yuki Okada
•
16K vistas
Docker 再入門 2016 update
Shiojiri Ohhara
•
3.3K vistas
2013年08月 夏サミ2013-A5「DevOpsってどうなのよ?」
Serverworks Co.,Ltd.
•
18.2K vistas
Railsで新規サービスを開発する際にやったこと
Jyunichi Kuriyama
•
1.3K vistas
RakSulのInternal API開発で gRPCを導入した話
nixiesan
•
5.7K vistas
Adobe xdモバイルアプリとの連携利用
Kazuma Sekiguchi
•
1K vistas
ソニーでElectronアプリをリリースしてみた
Yasuharu Seki
•
5.1K vistas
アプリ開発&チーム管理で役立った拡張機能
Masaki Suzuki
•
2.7K vistas
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
Kaz Aiso
•
693 vistas
Más de Yuji Otani
(20)
Hack/HHVMの最新事情とメイン言語に採用した理由
Yuji Otani
•
2.7K vistas
「技術のインテリジェンスを創る」をどうやって実現するか
Yuji Otani
•
7K vistas
Why choose Hack/HHVM over PHP7
Yuji Otani
•
3.8K vistas
PHP7ではなくHack/HHVMを選ぶ理由
Yuji Otani
•
12K vistas
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
Yuji Otani
•
9.1K vistas
PHP7がリリースされたいま、 改めてHackについて考える。
Yuji Otani
•
9.5K vistas
FuelPHP × HHVM サービス開発事例
Yuji Otani
•
5.1K vistas
Hack言語に賭けたチームの話
Yuji Otani
•
4.2K vistas
スタートアップにおける技術チームの作り方
Yuji Otani
•
17.4K vistas
Go言語のフレームワークRevelの紹介とサービスにおける活用事例
Yuji Otani
•
9.8K vistas
Hack+FuelPHPによるWebサービス開発
Yuji Otani
•
3.5K vistas
【初心者向け】Go言語勉強会資料
Yuji Otani
•
36.9K vistas
Phalcon勉強会資料
Yuji Otani
•
8.9K vistas
RDBとNoSQLの上手な付き合い方(勉強会@LIG 2013/11/11)
Yuji Otani
•
10.6K vistas
【基礎編】社内向けMySQL勉強会
Yuji Otani
•
6.5K vistas
Nginx勉強会
Yuji Otani
•
14.3K vistas
PHP基礎勉強会
Yuji Otani
•
9.2K vistas
負荷分散勉強会
Yuji Otani
•
8K vistas
NoSQL勉強会
Yuji Otani
•
7.2K vistas
Php5 4勉強会
Yuji Otani
•
3.6K vistas
Publicidad
Último
(20)
触感に関わる共感覚的表現と基本6感情の対応関係の検証
Matsushita Laboratory
•
0 vistas
留信网认证可查【皇家霍洛威学院文凭证书毕业证购买】
32lkhng
•
2 vistas
統計学の攻略_正規分布ファミリーの全体像.pdf
akipii Oga
•
133 vistas
20230602_enebular_meetup_kitazaki_v1.pdf
Ayachika Kitazaki
•
0 vistas
20230601_Visual_IoTLT_vol14_kitazaki_v1.pdf
Ayachika Kitazaki
•
0 vistas
量子論.pdf
hiro150493
•
5 vistas
JSONEncoderで詰まった話
とん とんぼ
•
22 vistas
【DL輪読会】Egocentric Video Task Translation (CVPR 2023 Highlight)
Deep Learning JP
•
6 vistas
CDLEハッカソン2022参加報告.pdf
SHOIWA1
•
7 vistas
☀️【中央兰开夏大学毕业证成绩单留学生首选】
25mjhd12
•
4 vistas
ペンタエリスリトール市場.pdf
HinaMiyazu
•
3 vistas
《杨百翰大学毕业证|学位证书校内仿真版本》
d520dasw12
•
2 vistas
ChatGPT触ってみた
infinite_loop
•
11 vistas
留信网认证可查【拜欧拉大学文凭证书毕业证购买】
1lkjhg
•
3 vistas
20230523_IoTLT_vol99_kitazaki_v1.pdf
Ayachika Kitazaki
•
107 vistas
Forguncy製品概要.pptx
フォーガンシー
•
0 vistas
☀️【杜兰大学毕业证成绩单留学生首选】
2125nuh
•
2 vistas
JSTQB_テストマネジメントとレビュープロセス.pdf
akipii Oga
•
113 vistas
SoftwareControl.pdf
ssusercd9928
•
15 vistas
Forguncy8 製品概要 202305.pptx
フォーガンシー
•
38 vistas
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等と組み合わせることで、パフォーマンスの高い アプリケーション構築を実現することができます。 ぜひ試してみてください。
発表は以上になります。 ご清聴ありがとうございました。
Publicidad