マジセミドライブ
ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。
OSS情報
2020.01.01
【OSS情報アーカイブ】Redis


※当記事に記載されている情報は、古くなっている場合があります。オフィシャルサイトで最新情報をご確認ください。
コンテンツ
「Redis」とは
「Redis」基本情報
■概要
Redis(レディス)とは、インメモリベースのキーバリューモデル型NoSQLデータベースです。メモリ内データ構造ストアとして非常に高速なアクセスが可能で、データ永続化機能も備えています。
■基本説明
Redisは、メモリ上で動作するキーバリュー型データベースです。コンピュータのメインメモリ上にキーバリューストアを構築し、外部のプログラムに対してデータ保存/読み出しなどの機能を提供します。
「インメモリ高速アクセス」「データ構造サーバ」「永続化機能」などの特徴を持ちます。
「データ構造サーバ」は、TCPソケットとシンプルなプロトコルを持つサーバクライアントモデルを使用して送信される一連のコマンドによって、変更可能なデータ構造にアクセスできる機能を提供します。したがって、Redisにアクセスする各種アプリケーションは、データ構造に対して同一の方法でアクセスできます。
■動作環境
RedisはC言語で実装されており、「Linux」「OS X」「OpenBSD」「NetBSD」「FreeBSD」などでコンパイルして使用できます。
「ビッグエンディアンアーキテクチャ」「リトルエンディアンアーキテクチャ」「32ビット」「64ビット」の各システムをサポートし、外部依存関係なしで動作できます。
■経緯
・2009年 初版リリース
■ユースケース
Redisは、特にRDBMSが苦手とする領域で大きな効果を発揮します。
・データストレージ
・セッションキャッシュ
・フルページキャッシュ
・メッセージキューアプリケーション
・メッセージブローカー
・リーダーボード
・出力キャッシュ
・非同期高速キュー処理
・閲覧数カウンター
・リアルタイムランキング集計
・最新記事タイトル一覧リアルタイム出力
・末尾/先頭から特定件数を削除/フィルタ
・1:nに配信するメッセージモデル
また、多くの企業やサイトで採用されています。
・GitHub
・Amazon Web Services
・Azure
・Stack Overflow など
■オフィシャルサイト情報
オフィシャルサイト
ライセンス情報
Redisのライセンスは「三条BSDライセンス+他」です。
詳細について、こちらを参照ください。
→Redis →Redis license and trademark information
ダウンロード
導入事例
■同様製品
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「Memcached」など。
「Redis」の主な特徴
■Redisのデータモデル(キーバリューストア)
キーバリューストア(Key-Value Store)とは、「一意標識(キー:key)」と「データ(値:value)」を設定し、これらをペアで保存するデータベースの一種です。
従来のキーバリューストアは、キーに文字列値を関連付けるものでしたが、Redisでは、文字列値に限定されず、さまざまな複雑なデータ構造を格納できます。
データ構造サポート
Redisはさまざまなデータ構造をサポートし格納できます。
・文字列
・バイナリデータ
・リスト
・集合(セット)
・ハッシュ
・レンジクエリ
・ビットマップ
・ストリームを持つ地理空間インデックス など
→Redis →An introduction to Redis data types and abstractions
データ構造に対する操作
これらのデータ構造に対して各種操作を行えます。
・文字列追加
・ハッシュ値インクリメント
・リストへの要素追加
・ソートセットからの検索 など
■ハイパフォーマンス(インメモリデータベース)
Redisでは、すべてのデータについて、低速なストレージデバイスではなく、メモリ上に保持するため、非常な高速にデータ書き込み/読み込みが可能です。
■メモリ効率性
Redisのデータ構造実装はメモリ効率を重視しています。
そのため、Redis内部データ構造は、高水準プログラミング言語を使用してモデル化された同じデータ構造に比べて、メモリの使用量を少なくできる傾向があります。
■セキュリティ
一般セキュリティモデル
Redisは、信頼できる環境内の信頼できるクライアントによってアクセスされることを前提に設計されています。
そのため、「Redisインスタンスのインターネット直接公開」や「信頼できないクライアントがRedis TCPポートまたはUNIXソケットに直接アクセスできる環境に直接公開」などは非推奨となっています。信頼できないアクセスがある場合は、正当なアクセス権限を持つクライアントなのかについて検証するアクセス制御リストを実装している層を仲介させることが推奨されています。
Redisは最高のセキュリティを実現するために最適化されていませんが、パフォーマンスとシンプルさを最大限に高めることを目標としています。
保護モード
Redisバージョン3.2.0以降、Redisがデフォルト設定で実行されている状態で、クライアントがRedisにパスワードなしでアクセスすると、Redisは「保護モード」と呼ばれる特別なモードに入ります。
このモードでは、Redisはループバックインターフェースからのクエリにのみ応答します。
認証機能
Redisはシンプルな認証レイヤを有効化できます。
認証レイヤが有効になっていると、Redisは認証されていないクライアントによるクエリを拒否します。クライアントは、AUTHコマンドに続けてパスワードを送信することによって、自分自身を認証できます。
ネットワーク暗号化
Redisはネットワーク暗号化をサポートしていません。
信頼できるクライアントが信頼されていないネットワークを介してRedisインスタンスにアクセスできるようにするためには、SSLプロキシなどの追加の保護層を実装する必要があります。
Redisプロジェクトでは、ソケットアドレス間暗号化認証パイプ作成ユーティリティ「Spiped」の使用を推奨しています。
→Tarsnap →The spiped secure pipe daemon
■言語クライアントサポート
Redisは、多くの主要プログラミング言語をサポートしています。
「Redis」の主な機能
「Redis」の主なデータベース機能
■Redisコマンドラインインターフェース「redis-cli」
「redis-cli」はRedis用コマンドラインインターフェースです。
Redisにコマンドを送信し、Redisから返信された情報を表示するシンプルな機能を提供します。
→Redis →redis-cli, the Redis command line interface
コマンド機能
データベースやデータ構造を操作するための多くのコマンドが用意されています。
→Redis →Command reference – Redis
■トランザクション機能
トランザクション保証
Redisはトランザクションを保証しています。トランザクション内のすべてのコマンドはシリアル化され順番に実行されます。
Redisトランザクションの実行中に別のクライアントから発行された要求が処理されることはありません。これにより、コマンドが単一の独立した操作として実行されることが保証されます。
ロールバックは未サポート
トランザクション中にエラーが発生した場合、Redisはロールバックではなく残りのトランザクションを実行します。
Redisはロールバック機能を搭載しないことにより、高速アクセスを実現しています。
■パブリッシュ/サブスクライブ機能
Redisは、パブリッシャー(送信者)が特定のサブスクライバー(受信者)にメッセージを送信するパブリッシュ/サブスクライブメッセージングパラダイムを実装しています。
■機能強化「Redisモジュール」
Ruby/PHP/Java/C++などの主要な言語でRedisモジュール(クライアントライブラリ)が用意されています。
「要素操作機能」「ソート機能」「管理用コマンド」など、豊富な機能を利用できます。
・「neural-redis」—Redisデータ型として訓練可能なニューラルネットワーク
・「RediSearch」—全文検索
・「ReJSON」—RedisのJSONデータ型
・「RedisGraph」—Cypherベース照会言語によるグラフデータベース
・「Redis-ML」—機械学習モデルサーバ など
「Redis」の主なシステム機能
■永続化機能
Redis自身の停止やハード電源遮断などの障害によるデータが消失を防ぐために、Redisにはデータを永続化させる仕組みが用意されています。
ディスク格納タイミングは、ユースケースに応じて「毎回ダンプ」「コマンドトリガー」などを選択できます。必要ではない場合は無効化できます。
■レプリケーション機能
Redisは「マスター/スレーブ非同期レプリケーション」をサポートしています。
「高速ノンブロッキング同期」「部分再同期」「自動再接続」などの機能を備えており、スレーブとなるインスタンスを追加することによりアクセス負荷を分散できます。
■高可用化機能「Redis Sentinel」
概要
「Redis Sentinel」は高可用性を提供します。
→Redis →Redis Sentinel Documentation
主な機能
・モニタリング機能
・通知機能
・自動フェイルオーバー機能
・構成プロバイダー機能 など
■レイテンシモニタリング機能
概要
Redisは、インスタンスごと1秒あたりに大量クエリを処理する要求の厳しいユースケースでよく使用されるため、平均レスポンス時間と待ち時間の両方に非常に厳しいレイテンシ要件があります。
そのため、Redisにはレイテンシ状況を確認するための機能「レイテンシモニタリング」が用意されています。
→Redis →Redis latency monitoring framework
主な機能
・レイテンシのコードパスをサンプリング
・異なるイベントによって分割されたレイテンシスパイクの時系列記録
・レポートエンジン—時系列データをフェッチ
・分析エンジン—測定値に基づいて人間が判読可能なレポートとヒントを提供
参考元サイト
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。
この記事のタグ一覧
フリーワード検索
カテゴリー一覧
アクセスランキング
- 🏆ランク1位🏆
【無料で使える】「 OCR 」ツールまとめ - 🏆ランク2位🏆
【無料で使える】「 ドキュメント管理 」ツールまとめ - 🏆ランク3位🏆
【ツール紹介】無料オープンソース「 ビデオ監視 ツール 」まとめ3選 - 🏆ランク4位🏆
【OSS情報】AIネイティブ埋め込みデータベース「 Chroma 」 - 🏆ランク5位🏆
【OSS情報アーカイブ】NW.js - 🏆ランク6位🏆
【無料で使える】「 プロジェクト管理 」ツールまとめ - 🏆ランク7位🏆
【無料で使える】「 バックアップ 」ツールまとめ - 🏆ランク8位🏆
【OSS情報アーカイブ】Odoo - 🏆ランク9位🏆
【ChatGPTプラグイン探訪】「 WebPilot 」〜Web検索プラグイン〜 - 🏆ランク10位🏆
【無料で使える】「 暗号化 」ツールまとめ