Redis

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」のプラグイン追加
file

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です