concrete5 (8.5.0 以降) で Redis を使う方法
10738 ワード
さきほどリリースされた concrete5 8.5.0 で、コンクリートファイブジャパン株式会社の敏腕 CTO である Derek 氏が、Redis キャッシュをコアで使えるようにしてくれました。
concrete5 の config への Redis サーバーの設定方法のサンプルを書いておきます。
- Redis のエンドポイント・ポート番号を適宜設定変更してください
- php-pecl-redis をサーバーにインストールしてください。 (Amazon Linux 2 へは後述の参考記事参照。)
- 複数の concrete5 を同じ Redis 内で動かす場合は、キャッシュ部分の
database
の ID がかぶらないように設定してください。 - Session の設定は
name
が被らないようにしてください。database は0
のままで良いです。 - Redis のデフォルトでは
database
は 0~15 までしか設定できないため、理論上は 7 つの concrete5 サイトの共存が可能です。(Session 情報は database 0 を利用し続けたとして) ただし、キャッシュのサイズなどでパフォーマンスや容量不足が起こる可能性がありますので、かならず検証してください。
/application/config/concrete.php
<?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 // 接続までのタイムアウト秒
],
],
];
/* concrete5 のキャッシュ設定
--------------------------
環境別にキャッシュ設定を分けたい場合に、
下記のコメントアウト部分を有効にし設定します。
*/
/*
$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,
]]
);
*/
// ここで concrete5 に設定を返す
return [
'cache' => $cache,
'session' => $session,
'misc' => [
'app_version_display_in_header' => false, // この Qiita 記事とは関係ない設定
],
];
concrete5 8.4.x であれば、オーバーライドする方法で Redis を使えるようにしています。
詳しくは GitHub のレポジトリを御覧ください。
https://github.com/concrete5cojp/concrete5-redis-override
参考記事
Author And Source
この問題について(concrete5 (8.5.0 以降) で Redis を使う方法), 我々は、より多くの情報をここで見つけました https://qiita.com/katzueno/items/0f172a2d5bc65fc9acb2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .