Redisとは?初心者向けに仕組みや特徴を徹底解説!爆速データベースの秘密
生徒
「データベースと言えば『MySQL』や『PostgreSQL』などが有名ですが、最近『Redis(レディス)』という名前もよく聞きます。これは何が違うんですか?」
先生
「Redisは、データを保存する場所が普通のデータベースとは違うんです。一般的なデータベースが『本棚(ハードディスク)』にしまうのに対し、Redisは『机の上(メモリ)』にデータを置くようなイメージですね。」
生徒
「机の上?それだと、すぐに手に取れるから作業がめちゃくちゃ早そうですね!」
先生
「その通りです!スピードが最大の武器なんです。ただ、机の上はスペースに限りがあったり、片付け(電源OFF)で消えてしまったりする注意点もあります。今日はその仕組みを、パソコンに詳しくない方でもわかるように解説しますね。」
1. Redis(レディス)とは?超高速な「メモリ内」データベース
Redis(Remote Dictionary Server)は、一言で言うと「爆速で動くデータの保管庫」です。私たちが普段使っているスマートフォンやパソコンのアプリで、ランキングの表示や、一時的なログイン情報の保存などに広く使われています。
最大の特徴は、データを「メインメモリ(RAM)」に保存することです。ここで言う「メモリ」とは、パソコンが作業をするときに一時的に広げる「作業机」のことです。通常のデータベースが「ストレージ(HDDやSSD)」という、奥まった場所にある「倉庫」にデータを書き込むのに対し、Redisは目の前の机にメモを置くようにデータを扱います。だからこそ、読み書きのスピードが桁違いに速いのです。
また、Redisは「キー・バリュー型(NoSQL)」という形式を採用しています。これは、お菓子の「名前(キー)」と、その「中身(バリュー)」をセットにして保存するような、非常にシンプルな仕組みです。
エンジニアの必須スキル「SQL」を、 図解と豊富な練習問題でゼロから体系的に学びたい人へ。 MySQLやPostgreSQLなど、各種データベースに対応した不朽の入門書です。
SQL 第2版 ゼロからはじめるデータベース操作をAmazonで見る※ Amazon広告リンク
2. Redisの仕組みを身近な例で例えてみよう
コンピュータの用語は難しいので、料理に例えて考えてみましょう。
・普通のデータベース(MySQLなど)= 冷蔵庫や倉庫
大量の食材を安全に保管できますが、取り出すには扉を開けて、どこにあるか探して……という手間がかかります。これが「ハードディスク(ストレージ)」へのアクセスです。
・Redis = まな板の横にある小皿
今まさに使いたい塩や砂糖を小皿に出しておく状態です。手を伸ばせば一瞬で使えますよね。これが「メモリ」へのアクセスです。
しかし、小皿(メモリ)は冷蔵庫(ストレージ)ほど大きくありません。また、小皿に乗せたものは、料理が終わってキッチンを掃除(電源を切る)すると片付けられてしまいます。Redisは、この「速いけれど容量に限りがある」「基本的には一時的な保存に向いている」という特性を活かして、他のデータベースと組み合わせて使われることが多いのです。
3. Redisで使われる「キー・バリュー」という保存方法
Redisでは、データを保存する際に「名前(Key)」と「値(Value)」をペアにします。これを「キー・バリュー・ストア(KVS)」と呼びます。プログラミングを知らなくても、靴箱を想像すれば簡単です。「1番の棚」という名札が「キー」で、その中に入っている「スニーカー」が「値」です。
それでは、実際にどのようにデータを登録するのか、簡単な命令を見てみましょう。Redisでは「SET(セット)」という命令で保存し、「GET(ゲット)」という命令で取り出します。
例1:ユーザーの名前を保存して取り出す
まずは、現在のデータの中身を確認してみましょう。まだ何も入っていない状態です。
キー(Key) | 値(Value)
------------+------------
(空っぽ) | (空っぽ)
ここに、ユーザーID「user:101」の名前に「田中」さんを登録してみます。
SET user:101 "田中"
GET user:101
実行結果は次のようになります。一瞬でデータが保存され、取り出せました。
"OK"
"田中"
実行後のデータの中身は、このようになっています。
キー(Key) | 値(Value)
------------+------------
user:101 | 田中
4. Redisが得意なこと!ランキングやカウンター
Redisはただのメモ帳ではありません。数字を数えたり、順番を並べ替えたりする機能が非常に強力です。例えば、ウェブサイトの「アクセス数(PV数)」を数えるとき、普通のデータベースだと更新のたびに「倉庫」へ書き込みに行くので、アクセスが殺到するとパンクしてしまいます。しかし、Redisなら「机の上」でカチカチとカウンターを押すだけなので、1秒間に数万件のアクセスがあっても平気です。
例2:アクセス数を「1」ずつ増やす(INCR命令)
「INCR(インクリメント)」という命令を使うと、指定したキーの数字を1つ増やすことができます。現在のサイト訪問者数を見てみましょう。
キー(Key) | 値(Value)
------------+------------
page_views | 100
user:101 | 田中
ここに新しい訪問者が来たので、数字を増やします。
INCR page_views
GET page_views
結果、数字が101に更新されました。
(integer) 101
"101"
実行後のデータ状況です。
キー(Key) | 値(Value)
------------+------------
page_views | 101
user:101 | 田中
5. データの「有効期限」を決められる(TTL機能)
Redisのもう一つの素晴らしい機能が「期限切れ(TTL:Time To Live)」の設定です。例えば、スマホアプリの「ログイン状態」や「30分間だけ有効なクーポン」など、時間が経ったら消えてほしいデータに最適です。
「EXPIRE(エクスパイア)」という命令を使えば、指定した秒数が経過した後にデータを自動で削除してくれます。これにより、メモリがいっぱいになるのを防ぎ、常に最新で必要なデータだけを机の上に残しておくことができます。
例3:5秒間だけ有効な合言葉を保存する
現在のデータ一覧です。
キー(Key) | 値(Value) | 残り時間
----------------+------------+---------
page_views | 101 | 無制限
user:101 | 田中 | 無制限
「secret_code」という合言葉を、5秒間(EX 5)だけ保存してみます。
SET secret_code "9999" EX 5
GET secret_code
保存直後に確認すると、データが存在します。
"OK"
"9999"
しかし、5秒待ってからもう一度同じ命令を出すと、結果は空(nil)になります。自動でお掃除されたわけです。
(nil)
6. なぜ初心者がRedisを知っておくべきなのか
プログラミング未経験の方が「データベース」を学ぶ際、最初はどうしても「表形式(SQL)」の難しいルールに翻弄されがちです。しかし、Redisのような「キー・バリュー型」を学ぶことで、コンピュータがどのようにデータを効率よく管理しているのか、その本質を直感的に理解できるようになります。
現代のアプリ開発において、Redisは「必須のスパイス」のような存在です。メインの大きなデータを保存するのは従来のデータベースに任せ、ユーザーにストレスを感じさせない高速なレスポンスを実現するためにRedisが裏側で支えています。GoogleやTwitter、Instagramといった世界的なサービスも、このRedisの仕組みを使って、私たちのスマホに一瞬で情報を届けているのです。
最初は「名前と値を入れる爆速の箱」という理解だけで十分です。そこから、リスト形式(順番のあるデータ)やハッシュ形式(複数の項目をまとめたデータ)など、少しずつ扱えるデータの種類を増やしていくことで、より高度なシステム作りへの道が開けます。