如何在Concrete CMS (8.5.0及以上版本)中使用Redis

从具体的CMS 8.5.0版本开始,可以在核心中使用Redis缓存。

我会写出关于配置Redis服务器的Concrete CMS示例。

    • Redis のエンドポイント・ポート番号を適宜設定変更してください

 

    • php-pecl-redis をサーバーにインストールしてください。 (Amazon Linux 2 へは後述の参考記事参照。)

 

    • 複数の Concrete CMS を同じ Redis 内で動かす場合は、キャッシュ部分の database の ID がかぶらないように設定してください。

 

    • Session の設定は name が被らないようにしてください。database は 0 のままで良いです。

 

    Redis のデフォルトでは database は 0~15 までしか設定できないため、理論上は 7 つの Concrete CMS サイトの共存が可能です。(Session 情報は database 0 を利用し続けたとして) ただし、キャッシュのサイズなどでパフォーマンスや容量不足が起こる可能性がありますので、かならず検証してください。
<?php

// overrides キャッシュ設定の定義 $redisDriverOverrides
$redisDriverOverrides = [
    'preferred_driver' => 'redis',
    'drivers'=> [
        'redis'=>[
            'options' => [
                'servers' => [
                    [
                        'server' => '【Redis のエンドポイント】', // localhost もしくは ElastiCache などのエンドポイント
                        'port' => 6379, // ポート番号
                        'ttl' => 30 // 接続までのタイムアウト時間
                    ],
                ],
                'prefix'=>'c5_cache', // prefix は変更可能
                'database'=> 1 // デフォルトでは 0~15 まで選べる。複数サイトを格納する場合は別の番号に!
            ],
        ],
    ],
];
// expensive キャッシュ設定の定義 $redisDriverExpensive
$redisDriverExpensive = [
    'preferred_driver' => 'redis',
    'drivers'=> [
        'redis'=>[
            'options' => [
                'servers' => [
                    [
                        'server' => '【Redis のエンドポイント】', // localhost もしくは ElastiCache などのエンドポイント
                        'port' => 6379, // ポート番号
                        'ttl' => 30 // 接続までのタイムアウト時間
                    ],
                ],
                'prefix'=>'c5_cache', // prefix は変更可能
                'database'=> 2 // デフォルトでは 0~15 まで選べる。複数サイトを格納する場合は別の番号に!
            ],
        ],
    ],
];

$cache = [];
$session = [];

// キャッシュ設定の定義。フルページキャッシュの保存先の設定と、さきほどの $redisDriverOverrides & $redisDriverExpensive の設定値を適用。Objectキャッシュはデフォルトのメモリのままにする(その方が高速) その他 Expensive キャッシュを SQLite に設定する方法などもあり
$cache = [
    'page' => [
        'adapter' => 'redis',
        'redis' => [
            'servers' => [
                [
                    'server' => '【Redis のエンドポイント】', // localhost もしくは ElastiCache などのエンドポイント
                    'port' => 6379, // ポート番号
                    'ttl' => 30 // 接続までのタイムアウト秒
                ],
            ],
            'prefix'=>'page',
            'database'=> 3 // デフォルトでは 0~15 まで選べる。複数サイトを格納する場合は別の番号に!
        ],
    ],
    'levels' => [
        'overrides' => [
            'drivers' => $redisDriverOverrides,
        ],
        'expensive' => [
            'drivers' => $redisDriverExpensive,
        ],
        'object' => [
            'preferred_driver' => 'core_ephemeral'
        ],
    ],
];

// PHP Session の保存先を定義
$session = [
    'name' => 'CONCRETE5', // セッション名 複数サイトを格納する場合はここをサイトごとに名前を変えてください。
    'handler' => 'redis',
    'redis' => [
        'database' => 0, // デフォルトでは 0~15 まで選べる。ひとまず "0" はセッションを保存するようにしましょう。
	    'servers' => [
	        [
	            'server' => '【Redis のエンドポイント】', // localhost もしくは ElastiCache などのエンドポイント
	            'port' => 6379, // ポート番号
	            'ttl' => 10 // 接続までのタイムアウト秒
	        ],
	    ],
    ],
];

/* Concrete CMS のキャッシュ設定
--------------------------
環境別にキャッシュ設定を分けたい場合に、
下記のコメントアウト部分を有効にし設定します。
*/

/*
$cache = array_merge(
    $cache, ['blocks' => true,
        'assets' => true,
        'theme_css' => false,
        'overrides' => true,
        'pages' => 'blocks',
        'full_page_lifetime' => 'default',
        'full_page_lifetime_value' => '30',
        'clear' => [
            'thumbnails' => false,
        ]]
);
*/

// ここで Concrete CMS に設定を返す
return [
    'cache' => $cache,
    'session' => $session,
    'misc'              => [
        'app_version_display_in_header' => false, // この Qiita 記事とは関係ない設定
    ],
];

如果是Concrete CMS 8.4.x的话,我们可以通过覆盖的方式来使用Redis。

请查看GitHub存储库以获取更详细信息。
https://github.com/concrete5cojp/concrete5-redis-override

参考来源

    • Amazon Linux 2 の PHP7.2 で ElastiCache の Redis を使う方法

 

    Concrete CMS で環境ごとに別の設定ファイルを読み込む方法
广告
将在 10 秒后关闭
bannerAds