マジセミドライブ

ウェビナー関連のニュースやITサービス&ツールの最新情報を随時配信します。

OSS情報

2020.01.01

【OSS情報アーカイブ】Redis

【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

ライセンス情報

Redisのライセンスは「三条BSDライセンス+他」です。

詳細について、こちらを参照ください。
→Redis →Redis license and trademark information

ダウンロード

→Redis →Download

導入事例

→Redis →Who's using Redis?

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「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 →Clients

「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 →Transactions

ロールバックは未サポート

トランザクション中にエラーが発生した場合、Redisはロールバックではなく残りのトランザクションを実行します。

Redisはロールバック機能を搭載しないことにより、高速アクセスを実現しています。

■パブリッシュ/サブスクライブ機能

Redisは、パブリッシャー(送信者)が特定のサブスクライバー(受信者)にメッセージを送信するパブリッシュ/サブスクライブメッセージングパラダイムを実装しています。

→Redis →Pub / Sub

■機能強化「Redisモジュール」

Ruby/PHP/Java/C++などの主要な言語でRedisモジュール(クライアントライブラリ)が用意されています。

「要素操作機能」「ソート機能」「管理用コマンド」など、豊富な機能を利用できます。
・「neural-redis」—Redisデータ型として訓練可能なニューラルネットワーク
・「RediSearch」—全文検索
・「ReJSON」—RedisのJSONデータ型
・「RedisGraph」—Cypherベース照会言語によるグラフデータベース
・「Redis-ML」—機械学習モデルサーバ など

→Redis →Redis Modules

「Redis」の主なシステム機能

■永続化機能

Redis自身の停止やハード電源遮断などの障害によるデータが消失を防ぐために、Redisにはデータを永続化させる仕組みが用意されています。

ディスク格納タイミングは、ユースケースに応じて「毎回ダンプ」「コマンドトリガー」などを選択できます。必要ではない場合は無効化できます。

→Redis →Redis Persistence

■レプリケーション機能

Redisは「マスター/スレーブ非同期レプリケーション」をサポートしています。

「高速ノンブロッキング同期」「部分再同期」「自動再接続」などの機能を備えており、スレーブとなるインスタンスを追加することによりアクセス負荷を分散できます。

→Redis →Replication

■高可用化機能「Redis Sentinel」

概要

「Redis Sentinel」は高可用性を提供します。

→Redis →Redis Sentinel Documentation

主な機能

・モニタリング機能
・通知機能
・自動フェイルオーバー機能
・構成プロバイダー機能 など

■レイテンシモニタリング機能

概要

Redisは、インスタンスごと1秒あたりに大量クエリを処理する要求の厳しいユースケースでよく使用されるため、平均レスポンス時間と待ち時間の両方に非常に厳しいレイテンシ要件があります。

そのため、Redisにはレイテンシ状況を確認するための機能「レイテンシモニタリング」が用意されています。

→Redis →Redis latency monitoring framework

主な機能

・レイテンシのコードパスをサンプリング
・異なるイベントによって分割されたレイテンシスパイクの時系列記録
・レポートエンジン—時系列データをフェッチ
・分析エンジン—測定値に基づいて人間が判読可能なレポートとヒントを提供

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

この記事のタグ一覧

おすすめの記事

【IT用語解説】「 デジタルヒューマン 」とは😊

IT用語解説

2024.01.26

【IT用語解説】「 デジタルヒューマン 」とは😊

【IT用語解説】「 デジタルヒューマン 」として、「デジタルヒューマンとは何か?」「どのようにして作成できるのか?」「私たちの世界にどのような影響を与えているのか?」などについて、まとめています。

AIツール関連 記事リストポータル

AIツール

2023.10.05

AIツール関連 記事リストポータル

AI 関連の記事をまとめたポータルページです。

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

AIツール実験室

2023.12.27

【AIツール実験室】チャットAI対抗「添削能力」選手権🏆

各チャットAIの「添削能力」について比較確認をしています。 「ChatGPT4と同等の添削能力を発揮した無料チャットAI」にご注目ください。 また、 ChatGPTカスタマイズ機能「GPTs」を利用して作成した GPTs文章添削機能「添削師匠さん✍️」を紹介しています。 課金勢は試しに使ってみてください。