redisのインストール
既にインストールされているかの確認
確認方法 | コマンド | 確認できること |
---|---|---|
redis-serverコマンドで確認 | redis-server --version | コマンドとして使えるか |
systemctlでサービス確認 | sudo systemctl status redis | サービスとして動いてるか |
redisをインストール
sudo dnf install redis
インストールが終わったら
sudo systemctl enable redis #サーバー再起動時に、自動でRedisを起動するよう設定
sudo systemctl start redis #今この瞬間、Redisサーバーを起動する
enable
が成功しているか確認
systemctl is-enabled redis
edisサーバーがちゃんと動いているかの確認。「PONG」が返ればOK
redis-cli ping
php-redis拡張の導入
すでに入っているか
php -m | grep redis
AlmaLinuxでPHP関連を使うときは「Remiリポジトリ」がほぼ必須なのであるか確認
dnf repolist all | grep remi
インストール
sudo dnf install php-redis
PHP側にモジュールを読ませるためにapacheを再起動
sudo systemctl restart httpd
インストールできているか確認
php -m | grep redis
PHPから動作確認
Redis動作確認用 シンプルPHPスクリプト
<?php
// Redisに接続
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
//127.0.0.1(ローカル)にRedis接続。
//6379はredisのデフォルトのポート番号
// テスト用にキーと値をセット
$redis->set('test_key', 'Hello, Redis!');
// セットした値を取り出して表示
$value = $redis->get('test_key');
echo "Redisから取得した値: " . $value;
?>
AOFモードを有効にする
すべての書き込みを確実にログに残し、再起動しても完全復元するためにAOFモードを有効にする。
現在のモードの確認
$ redis-cli CONFIG GET save
1) "save"
2) "3600 1 300 100 60 10000"
$ redis-cli CONFIG GET appendonly
1) "appendonly"
2) "no"
“3600 1 300 100 60 10000” の意味
時間(秒) | 変更件数 | 意味 |
---|---|---|
3600秒(1時間) | 1件以上の変更があったら保存 | |
300秒(5分) | 100件以上の変更があったら保存 | |
60秒(1分) | 10000件以上の変更があったら保存 |
結果から見た現在の挙動
項目 | 状態 | 説明 |
---|---|---|
データ保存先 | メモリ+一定間隔でRDB保存 | 保存は最大1時間遅れる可能性あり |
サーバー再起動時 | 保存済みのRDBから復元 | 直前の変更は消える可能性あり |
データ損失リスク | 小〜中(高頻度更新には不向き) | テスト用途ならOK。本番用途なら改善推奨 |
/etc/redis/redis.conf に追記(または変更)
appendonly yes
反映
sudo systemctl restart redis
反映を確認
redis-cli CONFIG GET appendonly
monitで監視する
fidfileが見つからなかったので以下の書き方
#check process redis with pidfile /var/run/redis/redis.pid
check process redis with matching "redis-server" # pidfileが見つからないのでこの書き方を採用
start program = "/bin/systemctl start redis" # Redisの起動コマンド
stop program = "/bin/systemctl stop redis" # Redisの停止コマンド
if failed port 6379 then restart # Redisがポート6379で応答しなければ再起動する
if 5 restarts within 5 cycles then unmonitor # 5回連続再起動に失敗したら監視を停止(アラート用)
sudo monit reload
→ sudo monit summary
で確認
redisにデータを登録する
phpで登録するサンプルスクリプト
<?php
// MySQL接続
$db = new mysqli('localhost', 'ユーザー名', 'パスワード', 'データベース名');
if ($db->connect_error) {
die("MySQL接続失敗: " . $db->connect_error);
}
// Redis接続
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// Redisのセット名(任意)
$set_name = 'words';
// MySQLから単語を取得
$result = $db->query("SELECT word FROM word_list");
if (!$result) {
die("クエリ失敗: " . $db->error);
}
// Redisに追加
$count = 0;
while ($row = $result->fetch_assoc()) {
$redis->sAdd($set_name, $row['word']);
$count++;
}
echo "Redisに $count 件登録しました。";
?>
linuxで登録件数を確認
redis-cli SCARD words
登録内容の確認
$ redis-cli --raw
SMEMBERS words