Skip to content

cosicosilife.com

ライフハックについていろいろ書きます

Primary Menu
  • サイトマップ
  • クラウド技術
  • 安全資産投資
  • 旅行
  • ライフハック
  • プライバシーポリシー
  • 運営者情報とご連絡先
  • Home
  • 未分類
  • Wordpress/Mysql にredis を組み込んでみる
  • 未分類

WordPress/Mysql にredis を組み込んでみる

david 2025年2月10日

この記事では、すでにdocker compose で運用しているwordpress やmysql に加えて、redis を組み込む作業を説明します。

このdocker compse コンフィグを入れるだけで一応動きます

version: '3.8'

services:
  # MySQL サービス
  mysql:
    image: mysql:latest
    restart: always
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/conf/custom.cnf:/etc/mysql/conf.d/custom.cnf
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE:-wordpress}
      MYSQL_USER: ${MYSQL_USER:-root}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    ports:
      - "3306:3306"  # ホストの3306ポートをコンテナの3306ポートに公開
    networks:
      - default

  # WordPress サービス
  wordpress:
    image: wordpress:latest
    restart: always
    volumes:
      - ./themes:/var/www/html/wp-content/themes
      - ./plugins:/var/www/html/wp-content/plugins
      - ./uploads:/var/www/html/wp-content/uploads
    depends_on:
      - mysql
      - redis  # Redis に依存関係を追加
    ports:
      - "3001:80"
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE:-wordpress}
      WORDPRESS_DB_USER: ${MYSQL_USER:-root}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_CONFIG_EXTRA: |
        define('WP_REDIS_HOST', 'redis');
        define('WP_REDIS_PORT', 6379);
        define('WP_CACHE_KEY_SALT', 'your-domain-name');
        define('WP_CACHE', true);  # キャッシュを有効化
    networks:
      - default

  # Redis サービス(追加)
  redis:
    image: redis:latest
    container_name: redis
    restart: always
    ports:
      - "6379:6379"  # ホストの6379ポートをコンテナの6379ポートに公開
    volumes:
      - redis-data:/data  # 永続化用ボリューム(オプション)
    networks:
      - default

  # Prometheus サービス
  prometheus:
    image: prom/prometheus:latest
    restart: always
    volumes:
      - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus-data:/prometheus  # 永続化用ボリューム
    ports:
      - "9090:9090"
    networks:
      - default

  # Grafana サービス
  grafana:
    image: grafana/grafana:latest
    restart: always
    volumes:
      - grafana-data:/var/lib/grafana  # 永続化用ボリューム
    ports:
      - "3000:3000"
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin  # Grafana管理者パスワード(必要に応じて変更してください)
    networks:
      - default

  # Node Exporter サービス
  node-exporter:
    image: prom/node-exporter:latest
    restart: always
    ports:
      - "9100:9100"
    networks:
      - default

  # MySQL Exporter サービス
  mysql-exporter:
    image: prom/mysqld-exporter:latest
    restart: always
    environment:
      DATA_SOURCE_NAME: "${MYSQL_USER}:${MYSQL_PASSWORD}@tcp(mysql:3306)/${MYSQL_DATABASE}"
    networks:
      - default

networks:
  default:
    driver: bridge

volumes:
  prometheus-data:  # Prometheus の永続化ボリューム
  grafana-data:     # Grafana の永続化ボリューム
  redis-data:       # Redis の永続化ボリューム(オプション)

結局何を変更したのかというと

この記事の目次(クリックしたらジャンプ)

Toggle
  • 変更点の説明
  • Redis運用方法
  • 1. Docker Composeで起動
  • 2. Redisが正常に動作しているか確認
  • 3. WordPressでRedisキャッシュが有効か確認
  • 4. Redisキャッシュのクリア
  • 主要な確認コマンド
  • 1. キャッシュ内のキー数を確認
  • 2. キャッシュヒット率とミス率を確認
  • 3. メモリ使用量を確認
  • 4. キャッシュ内容の詳細を見る
  • すべてのキー一覧
  • 特定キーの値を見る
  • 5. リアルタイム統計を見る
  • まとめ
  • メリット

変更点の説明

  1. Redisサービスの追加:
    • redisサービスを追加し、最新のRedisイメージを使用。
    • ポート6379を公開し、WordPressと接続できるように設定。
    • 永続化用ボリュームredis-dataを指定(オプション)。
  2. WordPressでRedisを有効化:
    • WordPressの環境変数に以下を追加:phpdefine('WP_REDIS_HOST', 'redis'); define('WP_REDIS_PORT', 6379); define('WP_CACHE_KEY_SALT', 'your-domain-name'); define('WP_CACHE', true);
    この設定により、WordPressがRedisをキャッシュとして利用可能になります。
  3. 依存関係の設定:
    • depends_onにredisを追加し、WordPressがRedis起動後に動作するよう調整。

ということになります

Redis運用方法

1. Docker Composeで起動

以下のコマンドでサービス全体を起動します:

docker-compose up -d

2. Redisが正常に動作しているか確認

Redisコンテナが正常に起動しているか確認します:

docker ps | grep redis
abae26daad8f   redis:latest                    "docker-entrypoint.s…"   15 minutes ago   Up 15 minutes                   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp  

3. WordPressでRedisキャッシュが有効か確認

  • WordPress管理画面にログインし、「Plugins」から「Redis Object Cache」プラグインをインストール&有効化します

有効化して プラグインの設定画面で「Enable Object Cache」をクリックしてキャッシュを有効化します

  • キャッシュが有効になると、下記のように「Connected」と表示されます。

4. Redisキャッシュのクリア

キャッシュを手動でクリアする場合は以下のコマンドを実行:

docker exec redis redis-cli FLUSHALL

Redisキャッシュの状態やどれくらいのキャッシュがあるかを確認するためには、redis-cli を使用して以下のコマンドを実行することで情報を取得できます。これらのコマンドは、Redisが正常に動作している場合にキャッシュの統計情報やメモリ使用状況を確認するのに役立ちます。

主要な確認コマンド

1. キャッシュ内のキー数を確認

Redisデータベースに現在保存されているキー数を確認するには、以下のコマンドを使用します:

root@abae26daad8f:/data# redis-cli DBSIZE
(integer) 250
  • 出力例:text(integer) 250 この場合、現在のデータベースには250個のキーが保存されています。

2. キャッシュヒット率とミス率を確認

キャッシュ効率(ヒット/ミス率)を確認するには、以下のコマンドを使用します:

root@abae26daad8f:/data# redis-cli INFO stats | grep keyspace_hits
redis-cli INFO stats | grep keyspace_misses
keyspace_hits:4727
keyspace_misses:5337

  • keyspace_hits: キャッシュヒット数(キャッシュからデータが取得された回数)。
  • keyspace_misses: キャッシュミス数(キャッシュに存在せず、データベースから取得された回数)。

これらの値を使ってヒット率を計算できます:

 =keyspace hitskeyspace hits+keyspace misses×100 =keyspace hits+keyspace misseskeyspace hits​×100

キャッシュヒット率を計算すると、以下の通りです:

 =keyspace hitskeyspace hits+keyspace misses×100 =keyspace hits+keyspace misseskeyspace hits​×100値を代入すると:

 =47274727+5337×100=46.97% =4727+53374727​×100=46.97%したがって、キャッシュヒット率は 約46.97% です。

3. メモリ使用量を確認

Redisが使用しているメモリ量やメモリ関連情報を確認するには、以下のコマンドを使用します:

redis-cli INFO memory
# Memory
used_memory:3551024
mem_fragmentation_ratio:3.95
mem_fragmentation_bytes:10368704
maxmemory:0
maxmemory_human:0B
 
  • 各フィールドの意味:
    • used_memory: Redisが現在使用しているメモリ量(バイト単位)。
    • used_memory_human: 人間が読みやすい形式で表示されたメモリ使用量。
    • maxmemory: Redisに設定されている最大メモリ量。
    • mem_fragmentation_ratio: メモリ断片化率(1以上の場合、断片化が発生している可能性あり)。

4. キャッシュ内容の詳細を見る

Redisに保存されているキーやその値を確認するには、以下のコマンドを使用します:

すべてのキー一覧

bashredis-cli KEYS '*'
  • 出力例:textkey1 key2 key3

特定キーの値を見る

bashredis-cli GET <key_name>
  • 出力例:text"Hello, World!"

5. リアルタイム統計を見る

リアルタイムでRedisインスタンスの統計情報を監視するには、以下のコマンドを使用します:

bashredis-cli --stat
  • 出力例:text

——- data —— ——————— load ——————– – child –
keys mem clients blocked requests connections
506 1015.00K 1 0 24 (+0) 7
507 3.40M 51 0 146425 (+85964) …

text- 各列の意味:
  - `keys`: 現在保存されているキー数。
  - `mem`: 使用中のメモリ量。
  - `clients`: 接続中のクライアント数。
  
---

### **6. メモリ統計情報を見る**
詳細なメモリ統計情報を見るには、以下のコマンドを実行します:
```bash
redis-cli MEMORY STATS
  • 主な出力例:text
  1. “peak.allocated”
  2. (integer) <ピーク時に割り当てられたメモリ量>
  3. “total.allocated”
  4. (integer) <現在割り当てられているメモリ量>
  5. “dataset.bytes”
  6. (integer) <データセット全体で使用中のメモリ量>
    …
text
---

### **7. Redisキャッシュ全体をクリア**
もしキャッシュ全体をクリアしたい場合は、以下のコマンドで可能です。ただし、この操作は慎重に行ってください。
```bash
redis-cli FLUSHALL
  • このコマンドはすべてのデータベース内で保存されているキーと値を削除します。

まとめ

Redisキャッシュがどれくらいあるかやその効率性(ヒット率など)を見るためには、以下が重要です:

  1. キー数: DBSIZE コマンドで確認。
  2. ヒット/ミス率: INFO stats コマンドで確認。
  3. メモリ使用量: INFO memory または MEMORY STATS コマンドで確認。
  4. リアルタイム監視: --stat オプションでリアルタイム監視。

これらのコマンドを駆使することで、Redisキャッシュ状況やパフォーマンス状態を正確に把握できます。

メリット

  • Redisによるキャッシュ機能でデータベースクエリ回数が減少し、MySQLサーバーへの負荷軽減。
  • ページロード速度が向上し、ユーザー体験やSEOパフォーマンスが改善。
  • Docker Compose環境で簡単にセットアップ可能。

Continue Reading

Previous: Docker のmysql に Dbeaver でログインしてみる
Next: AWS + LINE +Lambda+ API Gateway で画像解析

Related Stories

image
  • 未分類

Twilio Elastic SIP Trunking を試す

david 2025年2月22日
aws
  • 未分類

AWS SSM を使ってみよう 

david 2025年2月16日
DNS
  • 未分類

【初心者向け】AWS Route 53 で cosicosilife.org に DNSSEC を設定する方法

david 2025年2月10日
  • argocdの導入
  • (タイトルなし)
  • オンプレUbuntuでHelm中心にKubernetes運用・CI/CD構築
  • Ubuntu上にArgo CDをインストールし、ブラウザアクセスできるようにする手順(k8s.cosicosilife.com対応)
  • 【初心者向け】Argo CD に初めてのアプリケーションをデプロイしてみよう!
  • サイトマップ
  • クラウド技術
  • 安全資産投資
  • 旅行
  • ライフハック
  • プライバシーポリシー
  • 運営者情報とご連絡先
  • サイトマップ
  • クラウド技術
  • 安全資産投資
  • 旅行
  • ライフハック
  • プライバシーポリシー
  • 運営者情報とご連絡先
Copyright © Cosicosilife | MoreNews by AF themes.