サイトアイコン APPSWINGBY Developers Blog

Redisを使ってますか?

redisとは

今回は、今、ある機能で注目している”Redis”ついてご紹介してみたいと思います。

Redis

あまり聞きなれないワードという方も多いと思います。まずは基本から!ということで、”Redis”の概要から簡単にご紹介してきます。

それではさっそくはじめていきましょう!

Redisとは

Redisとは、(REmote DIctionary Server)の略で、オープンソースのインメモリデータ構造ストアです。

一般的には「NoSQLデータベース」の一つとして分類されますが、単なるデータベースにとどまらず、キャッシュ、メッセージブローカー、セッションストアなど、様々な用途で利用されています。

Redisの主な特徴について、簡潔にまとめておきます。

Redisの主な特徴

1.インメモリデータストア

Redisはデータを主にメインメモリ(RAM)に格納します。これにより、非常に高速な読み書き性能を実現します。従来のディスクベースのデータベースと比較して、桁違いの速度でデータを処理できます。

永続性もサポートしており、データをディスクに保存するオプション(RDBスナップショットやAOFログ)も提供されるため、サーバーが再起動してもデータが失われることはありません。

2.多様なデータ構造のサポート

Redisが「データ構造ストア」と呼ばれる所以は、単なるキーと値のペアだけでなく、多様でリッチなデータ構造をネイティブにサポートしている点にあります。

主なデータ構造

3.単一スレッドモデル

Redisサーバーは、データ処理のコア部分を単一のスレッドで実行します。これにより、ロックの競合を避けて高いスループットと低レイテンシを実現します。I/O多重化(epoll/kqueue)を利用することで、単一スレッドでも大量のクライアント接続を効率的に処理できます

4.アトミック操作

Redisの操作はすべてアトミックです。これは、コマンドが完全に実行されるか、全く実行されないかのどちらかであることを意味し、競合状態を防ぎます。

複数のコマンドをアトミックに実行するためのトランザクション機能(MULTI/EXEC)も提供されます。

ところで、「アトミックって何?」と思われた方も多いと思います。

Redisの操作が「すべてアトミックである」とは、ある操作が実行される際に、その操作が完全に実行されるか、あるいは全く実行されないかのどちらかであり、途中の状態は存在しないという性質を意味しています。

もっと簡単に言うと、「分割不可能」な操作ということになります。

なぜ、アトミックであることが重要なのか?という疑問も当然湧いてくるのですが、説明をはじめるとまたまた長くなってしまいますので、また、別の機会に解説したいと思います。

5.高可用性とスケーラビリティ

Redisは、高可用性とスケーラビリティを実現するための機能として、「Redis Sentinel」と「Redis Cluster」という機能を提供しています。それぞれ異なる目的とアプローチで、Redisの運用をより堅牢かつ大規模にするために設計された機能です。

Redis Sentinel」と「Redis Cluster」について簡単にまとめてみました。

実は、今回の記事で、Redisの生みの親であるantirez氏がRedisに復帰後、最初にリリースしたのが”Vector Set”のすばらしさについてご紹介しようと思っていたのですが、Redisの基本をご紹介しているうちに、長文になってしましましたので、”Vector Set”については、また、別の記事でご紹介しようと思います。

今日も猛暑、、、暑すぎる日が続ていますが、、、厚さに負けず、今日も一日頑張りましょう!

モバイルバージョンを終了