後期第01回 - oddmutou/jugyo-2026kyototech GitHub Wiki
AWS Academyのクラスについて、後期で新しく作る予定でしたが、うまくいってないので今回に限り前のを使いましょう…。
環境再構築
AWS Academyの仕様で、クラスの最長期間が半年になっています。 したがって、新しいクラスに招待します!
アカウントが新しくなったので、AWS上の各種データはリセットされます。
EC2インスタンス作り直して、環境構築等を行ってください。
前期最終課題を正しく実施していた人は、手順書があるはずです。手順書通りにやれば問題ない、はずです。
やるべきこと
- vimのインストールおよび設定
- screenのインストールおよび設定
- dockerとdocker composeのインストール
- gitのインストール (
sudo yum install -y git) - 前期最終課題でgithub上に公開しているソースコードを、git cloneして持ってきて、起動
今回は,Redisというものを使ってみましょう。
Redisとは、KVSのひとつです。
KVS(Key-Valueストア)とは - IT用語辞典 e-Words
KVSとは、データ管理システムの種類の一つで、保存したいデータ(value:値)に対し、対応する一意の標識(key:キー)を設定し、これらをペアで格納する方式。
MySQLやPostgreSQLといったRDBMS(関係データベース)は,たくさん列を増やせる表のような内容を保存できます。一方で,KVSは,keyとvalueのセットでしか保存できません。列が2つかない表をイメージしてみてください。
また,Redisは 揮発性 のあるものとして使うことが多いです。 (不揮発性をもたせることも可能。)
まずRedisサーバーをインストール&起動します。
もちろんEC2インスタンスに直接インストールすることもできますが,これまでどおりコンテナ上で立ち上げます。
そしてこれもいつもどおりDocker Composeを使って,あたらしくDockerコンテナを立ち上げます。
compose.ymlのservicesディレクティブに以下の行を追記してみてください。
redis:
container_name: redis
image: redis:latest
ports:
- 6379:6379追記できたら、Docker Composeを再起動して(docker compose up しなおして)ください。
すると、redis というコンテナが立ち上がっているはずです。 docker compose ps コマンドで確認してみましょう。
redis-cliというツールでCLIで直接操作することができます。
redisコンテナ内のredis-cliを使うには
docker compose exec redis redis-cli↑このコマンドは、 redis というコンテナ内で、 redis-cli というコマンドを実行する、という意味ですね。
ではさっそく、値の保存、取得、キーの一覧の取得、削除をやってみましょう。
SET key value
例
127.0.0.1:6379> SET hoge huga
OK
GET key
例
127.0.0.1:6379> GET hoge
"huga"
キーの一覧をとることで、いまどのようなデータが保存されているか確認できます。
KEYS pattern
例
127.0.0.1:6379> SET hoge huga
OK
127.0.0.1:6379> SET hoge2 huga2
OK
127.0.0.1:6379> KEYS *
1) "hoge2"
2) "hoge"
DEL key
127.0.0.1:6379> SET hoge huga
OK
127.0.0.1:6379> DEL hoge
(integer) 1
exit
http://redis.shibu.jp/commandreference/
PHPのRedis用の拡張 phpredis を導入します。
Dockerfileに以下の3行を追記します。
RUN apk add --no-cache autoconf build-base \
&& yes '' | pecl install redis \
&& docker-php-ext-enable redis追記後の全体像はこんなかんじ https://github.com/oddmutou/jugyo-2026kyototech/blob/c55231eb9380a51beea6d84ce33d9062eb477c85/koki_01/Dockerfile
追記できたら、ビルド(docker compose build)のあと,再起動(docker compose upしなおす)してください。
ビルド&再起動できたら、PHPプログラムのなかで Redis クラスを使えるようになります。
https://github.com/phpredis/phpredis のREADMEを読んだり、自分で調べたりして、触ってみましょう。
redisを使ってアクセスカウンタを作ってみましょう。
(既存の.phpとは別のファイルにしましょう。)
動作例: http://44.220.166.232/enshu1.php
Redisで簡単な掲示板を作ってみましょう。
まずは、投稿がひとつだけしか保存されない(上書きされてしまうので古いものは消えてしまう)掲示板を作ってみましょう。
簡単なフォームを作って、POSTされてきた内容をRedisに保存すればよいです。
動作例: http://44.220.166.232/enshu2.php
複数の投稿を保存できる掲示板を作ってみましょう。
ヒント: 複数の投稿内容を配列で持つようにして,保存時は配列をJSONに変換(エンコード)してからRedisに保存するとよいです。逆にRedisから読み込むときはJSONから変換(デコード)しましょう。
動作例: http://44.220.166.232/enshu3.php
追加の演習です。物足りないひとはやってください。全体で説明は行いません。助言、解説が必要な人は授業中に個別に聞いてください。
演習3の掲示板に、名前欄を追加してみましょう。
演習3の掲示板で、投稿日時が保存、表示されるようにしてみましょう。
演習3の掲示板で、10件ごとのページングを実装してみましょう。
演習3の掲示板を、同じIPからは10秒に1回しか投稿できないようにしてみましょう。