Table of Contents
Redisは、ネットワーク接続された永続化可能なインメモリデータベース。連想配列(キー・バリュー)、リスト、セットなどのデータ構造を扱える。いわゆるNoSQLデータベースRedisは、ネットワーク接続された永続化可能なインメモリデータベース。連想配列(キー・バリュー)、リスト、セットなどのデータ構造を扱える。いわゆるNoSQLデータベースの一つ。
Redisのインストール
利用できるRedisのバージョンを確認
[root@~]# dnf module list redis
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
redis 5 [d] common [d] Redis persistent key-value database
redis 6 common [d] Redis persistent key-value database
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
redis remi-5.0 common [d] Redis persistent key-value database
redis remi-6.0 common [d] Redis persistent key-value database
redis remi-6.2 common [d] Redis persistent key-value database
redis remi-7.0 common [d] Redis persistent key-value database
Redisのリセット
[root@ ~]# dnf module reset redis
Redisのインストールするバージョンを指定
[root@ ~]# dnf module enable redis:remi-7.0
Redisのインストール
[root@ ~]# dnf module -y install redis:remi-7.0
Redisのバージョン確認
[root@ ~]# redis-server --version
Redis server v=7.0.9 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=e1a6b0ef4eda1052
Redisの起動・有効化
[root@ ~]# systemctl restart redis
[root@ ~]# systemctl enable redis
PhpRedisのインストール
ソースからのインストール
[root@ ~]# cd /opt/
[root@ ~]# git clone https://github.com/nicolasff/phpredis.git
[root@ ~]# cd phpredis
[root@ ~]# phpize
[root@ ~]# ./configure
[root@ ~]# make
[root@ ~]# make install
アップグレード or 再インストール
[root@ ~]# cd /opt/phpredis
[root@ ~]# git pull
[root@ ~]# phpize
[root@ ~]# make clean
[root@ ~]# ./configure
[root@ ~]# make
[root@ ~]# make install
PHPの設定
# vi /etc/php.ini
------------------------------------
extension=redis.so
------------------------------------
phpの起動と状態確認
[root@ ~]# systemctl restart php-fpm.service
[root@ ~]# systemctl status php-fpm.service
PhpRedisの確認
[root@ phpredis]# php -m | grep redis
redis
Apacheの再起動
[root@ ~]# systemctl restart httpd
[root@ ~]# systemctl status httpd
PhpRedisの動作確認
# vi redis_test.php
----------------------------------------
<?php
$time = time();
$remote_ip = $_SERVER['REMOTE_ADDR'] ?? null; // IP
$user_agent = $_SERVER['HTTP_USER_AGENT'] ?? null; // USER AGENT
$referer = $_SERVER['HTTP_REFERER'] ?? null; // REFERER
// Redis 処理
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// データ削除処理
if (isset($_POST['delete']) == true) {
$keys = $redis->keys('redis_test:*');
$redis->del($keys);
// データ登録処理
} else {
// Redis キー設定
$redis_key = 'redis_test:' . $remote_ip . ':' . $time;
// Redis 値設定
$redis_value = [
'user_agent' => $user_agent,
'referer' => $referer,
];
// Redis 登録
$redis->hMSet($redis_key, $redis_value);
$redis->expire($redis_key, (2 * 60 * 60)); // 有効期限(2H)
}
// Redis 登録データ取得
$redis_data = [];
$keys = $redis->keys('redis_test:*');
foreach($keys as $k => $redis_key) {
$redis_value = $redis->hMget($redis_key, ['user_agent', 'referer']);
list($key_str, $key_ip, $key_time) = explode(':', $redis_key); // Redis キーを各変数に格納
$redis_data[$key_time] = [
'date_time' => date('Y-m-d H:i:s', $key_time),
'remote_ip' => $key_ip,
'user_agent' => $redis_value['user_agent'],
'referer' => $redis_value['referer'],
];
ksort($redis_data); // ソート
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Redis TEST</title>
</head>
<body>
<h1>Redis TEST</h1>
<div>
<?php foreach($redis_data as $data):?>
<p>
<?php echo $data['date_time'];?>
<?php echo $data['remote_ip'];?>
<?php echo $data['user_agent'];?>
<?php echo $data['referer'];?>
</p>
<?php endforeach;?>
</div>
<div>
<form action="./redis_test.php" method="post">
<input type="submit" name="insert" value="登録">
<input type="submit" name="delete" value="削除">
</form>
</div>
</body>
</html>
----------------------------------------
WordPress
「Redis Object Cache」のプラグイン追加
NextCloud
# vi nextcloud/config/config.php
----------------------------------------
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),
----------------------------------------
参考URL
AlmaLinux8 + PHP8 環境にRedis6をインストール@僕はPHPエンジニア
phpredisのインストール方法 – Qiita
WordPress 永続オブジェクトキャッシュ Redis Object Cache
プロのインフラエンジニアが、ubuntu で、NextCloudを設定してみた。|笛あおい。|note