Redisの仕組みについて調べてみた

インフラ, データベースDB, インフラ


Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 86

Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 105

Webアプリケーションの開発を行う際によく高速化やパフォーマンスを上げるための一つの方法として、Redisを使うことがよくあります。Redisの仕組みについて少しでも分かれば良いと思っております。
RedisはインメモリDBの一つであるが、単なるKVSではなく、永続性やデータ型のサポートのような特徴を持っています。

Redisとは

Redisは、データ構造サーバーを実装するオープンソース・ソフトウェアプロジェクトであります。NoSQLデータベースの一つであり、ネットワーク接続されたインメモリデータベースでかつキーバリューがデータベースである。
インメモリDBの一つで、メモリ上にデータを保存することができるデータベースとなっている。メモリはCPUから直接アクセスできるため、RDBなどのストレージに保存するデータベースと比較して、非常に高速に動かすことができます。
RDBなどのストレージに保存するタイプのデータベースでも、ストレージをSSDにすることで、高速に動作させることができるが、SSDは二次記憶装置であり、CPUから直接アクセスすることができません。
また、揮発性のメモリを使用しているため、常に電源の供給がないとデータを保存し続けることができずに、データを失ってしまうという性質もあります。

データ構造

Redisは。data structure server(データ構造サーバー)と呼ばれています。複数の文字列要素からなるデータ構造をバリューとして持つことができ、通常の文字列型バリューと同じようにキーで参照することができます。

Redis で保存できるデータ

  • リスト型
  • セット型
  • ハッシュ型

RDBとの使い分け

Redisの場合、ハードディスクに比べメモリのほうがより高価であるので、容量が限られてきます。なので、大きなデータの格納には向いていません。
また、Redisは揮発性のメモリを使っているため、クラッシュした際にデータも飛んでしまうことがあるので、失ってしまうと困るデータの保存には向いていません。

Redisの導入

macの場合

brew install redis

起動と終了

#redis の起動
redis-server

#redis のclient起動
redis-cli

#redis の終了
exit

#内容のdump
shutdown