Docker(+ Docker-Compose) に Redis を入れる


Docker-Compose 環境に、Redis を入れる

今度は NoSQL として有名?な Redis を入れてみる。
NoSQL、Redisの詳しい話は、参考サイトを見てもらうとして。

NoSQL って何?

  • Not only SQL の略
    • 逆に、YeSQL なんてのもあるらしい

NoSQL - Wikipedia
NoSQL(一般に "Not only SQL" と解釈される)とは、関係データベース管理システム (RDBMS) 以外 のデータベース管理システムを指す おおまかな分類語 である。関係データベースを杓子定規に適用してきた長い歴史を打破し、それ以外の構造のデータベースの利用・発展を促進させようとする 運動の標語 としての意味合いを持つ。

Redis って何?

  • NoSQLデータベースの一つ
    • 今回の場合とかみたいに、KVS(キーバリューストア)として使われたりする
    • RDBと比べて高速で処理が出来たりする
      • RDBと組み合わせて使ったりもする

Redis - Wikipedia
Redisは、ネットワーク接続された永続化可能なインメモリデータベース。連想配列、リスト、セットなどのデータ構造を扱える。いわゆるNoSQLデータベースの一つ。オープンソースソフトウェアプロジェクトであり、Redis Labsがスポンサーとなって開発されている。

Redisをインストールする

フォルダは作っておく

mkdir RedisTest
cd RedisTest

docker-compose.yml を書く

docker-compose.yml の中身はコレ。

docker-compose.yml
version: '3'

services:
  #Redis
  redis:
    image: "redis:latest"
    ports:
      - "6379:6379"
    volumes:
      - "./data/redis:/data"

後で気づいたんだけど、この「Volumes」の項目が、
『データの永続化』をする際にどこに保存しておくかの設定のようだ。

この項目が存在しない場合、 docker-compose down -> docker-compose up すると、
Redisのデータが消えます。Redisのデータは通常はキャッシュとして扱うようなので、
消えても良いのが理想らしいのだけど、意図するかどうかは意識した方が良さそう。

Docker-Compose で Redis 起動

docker-compose up -d --build

Docker起動確認

$ docker-compose ps
      Name                     Command               State                 Ports
----------------------------------------------------------------------------------------------
mysqltest_redis_1   docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp

Redis 確認

$ docker exec -it mysqltest_redis_1 bash
root@ec5fc90e5ee3:/data# redis-cli
127.0.0.1:6379> keys *
(empty list or set)

中身が無いのが確認出来た。データとかはこれから。

参考