このエントリーをはてなブックマークに追加

概要

 インメモリのキー・バリュー型データベースであるRedisをインストールします。 2018/09/26時点でEPELリポジトリに登録されているRedisのバージョンが 3.2.12 と古かったので、 rpmfind.net で検索して最新のバージョン4.0.11をインストールしました。 今回設定のチューニングは行っていません。

 最終的にキー・バリューはJavaやPHPなどのプログラム言語から操作することを前提に考えていますが、 今回は簡易的にRedisをインストールするサーバのローカルで、コマンドラインツールの redis-cli を 使用して動作確認を行います。

構成

利用環境

 サーバ環境はAWS(Amazon Web Services)のEC2インスタンスを利用しました。 サーバのスペックは以下のとおりです。 Amazonマシンイメージ(AMI)にはAWS Marketplaceで公開されている『CentOS 7 (x86_64) - with Updates HVM』を使用しています。 インストールと動作確認目的であればマシンスペックが低くても問題ないので、インスタンスタイプはt2.microを選択しています。

■サーバスペック
項目内容
AMICentOS 7 (x86_64) - with Updates HVM
インスタンスタイプt2.micro
vCPU1
メモリ1GiB
ディスク汎用SSD(GP2) 8GiB
リージョン日本

サーバ構成

OSバージョン

CentOS 7.5.1804 x86_64

ソフトウェア・パッケージ一覧

  • redis-4.0.11-1.el7.remi.x86_64.rpm

サーバ構築

インストール

(1) EPELリポジトリの設定をインストール

 EPELリポジトリのRedisはインストールに使用しませんが、Redisの依存パッケージをインストールするために 必要となるので、EPELリポジトリの設定をインストールします。

$ sudo su -
# yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
epel-release-latest-7.noarch.rpm                                                                 |  15 kB  00:00:00
Examining /var/tmp/yum-root-_IAvnn/epel-release-latest-7.noarch.rpm: epel-release-7-11.noarch
Marking /var/tmp/yum-root-_IAvnn/epel-release-latest-7.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                    Arch                 Version              Repository                                   Size
========================================================================================================================
Installing:
 epel-release               noarch               7-11                 /epel-release-latest-7.noarch                24 k

Transaction Summary
========================================================================================================================
Install  1 Package

Total size: 24 k
Installed size: 24 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : epel-release-7-11.noarch                                                                             1/1
  Verifying  : epel-release-7-11.noarch                                                                             1/1

Installed:
  epel-release.noarch 0:7-11

Complete!

(2) yumでRedisをインストール

 yumコマンドでRedisをインストールします。 EPELリポジトリのRedisではなく、rpmfind.netで配布されているRedisのRPMファイルを使用してインストールします。 そのため、yumのコマンドはinstallではなく、localinstallでRPMファイル指定で実行します。 これだけでインストールは完了です。

# yum -y localinstall https://rpmfind.net/linux/remi/enterprise/7/remi/x86_64/redis-4.0.11-1.el7.remi.x86_64.rpm
Loaded plugins: amazon-id, rhui-lb, search-disabled-repos
redis-4.0.11-1.el7.remi.x86_64.rpm                                                               | 580 kB  00:00:01
Examining /var/tmp/yum-root-_IAvnn/redis-4.0.11-1.el7.remi.x86_64.rpm: redis-4.0.11-1.el7.remi.x86_64
Marking /var/tmp/yum-root-_IAvnn/redis-4.0.11-1.el7.remi.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package redis.x86_64 0:4.0.11-1.el7.remi will be installed
--> Processing Dependency: libjemalloc.so.1()(64bit) for package: redis-4.0.11-1.el7.remi.x86_64
epel/x86_64/metalink                                                                             | 9.7 kB  00:00:00
epel                                                                                             | 3.2 kB  00:00:00
rhui-REGION-client-config-server-7                                                               | 2.9 kB  00:00:00
rhui-REGION-rhel-server-releases                                                                 | 3.5 kB  00:00:00
rhui-REGION-rhel-server-rh-common                                                                | 3.8 kB  00:00:00
(1/10): epel/x86_64/group_gz                                                                     |  88 kB  00:00:00
(2/10): epel/x86_64/updateinfo                                                                   | 943 kB  00:00:00
(3/10): epel/x86_64/primary                                                                      | 3.6 MB  00:00:00
(4/10): rhui-REGION-client-config-server-7/x86_64/primary_db                                     | 1.2 kB  00:00:00
(5/10): rhui-REGION-rhel-server-releases/7Server/x86_64/group                                    | 855 kB  00:00:00
(6/10): rhui-REGION-rhel-server-rh-common/7Server/x86_64/primary_db                              | 122 kB  00:00:00
(7/10): rhui-REGION-rhel-server-releases/7Server/x86_64/updateinfo                               | 2.8 MB  00:00:00
(8/10): rhui-REGION-rhel-server-rh-common/7Server/x86_64/group                                   |  104 B  00:00:00
(9/10): rhui-REGION-rhel-server-rh-common/7Server/x86_64/updateinfo                              |  34 kB  00:00:00
(10/10): rhui-REGION-rhel-server-releases/7Server/x86_64/primary_db                              |  55 MB  00:00:01
epel                                                                                                        12687/12687
--> Running transaction check
---> Package jemalloc.x86_64 0:3.6.0-1.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package             Arch              Version                         Repository                                  Size
========================================================================================================================
Installing:
 redis               x86_64            4.0.11-1.el7.remi               /redis-4.0.11-1.el7.remi.x86_64            1.4 M
Installing for dependencies:
 jemalloc            x86_64            3.6.0-1.el7                     epel                                       105 k

Transaction Summary
========================================================================================================================
Install  1 Package (+1 Dependent package)

Total size: 1.5 M
Total download size: 105 k
Installed size: 1.7 M
Downloading packages:
warning: /var/cache/yum/x86_64/7Server/epel/packages/jemalloc-3.6.0-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Public key for jemalloc-3.6.0-1.el7.x86_64.rpm is not installed
jemalloc-3.6.0-1.el7.x86_64.rpm                                                                  | 105 kB  00:00:00
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
 Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
 Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
 Package    : epel-release-7-11.noarch (installed)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : jemalloc-3.6.0-1.el7.x86_64                                                                          1/2
  Installing : redis-4.0.11-1.el7.remi.x86_64                                                                       2/2
  Verifying  : jemalloc-3.6.0-1.el7.x86_64                                                                          1/2
  Verifying  : redis-4.0.11-1.el7.remi.x86_64                                                                       2/2

Installed:
  redis.x86_64 0:4.0.11-1.el7.remi

Dependency Installed:
  jemalloc.x86_64 0:3.6.0-1.el7

Complete!

設定

(1) Redisの自動起動設定と起動

 上記手順でインストールすると、RedisがSystemdの管理対象となりますが、 初期状態では自動起動が無効になっています。 自動起動を有効にして起動を行います。

 
# systemctl status redis.service
● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled) ←自動起動無効
  Drop-In: /etc/systemd/system/redis.service.d
           mqlimit.conf
   Active: inactive (dead) ←停止状態
# systemctl enable redis.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
# systemctl status redis.service
● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled) ←自動起動有効
  Drop-In: /etc/systemd/system/redis.service.d
           mqlimit.conf
   Active: inactive (dead) ←停止状態
# systemctl start redis.service
# systemctl status redis.service
● redis.service - Redis persistent key-value database
   Loaded: loaded (/usr/lib/systemd/system/redis.service; enabled; vendor preset: disabled) ←自動起動有効
  Drop-In: /etc/systemd/system/redis.service.d
           mqlimit.conf
   Active: active (running) since Tue 2018-09-25 15:10:58 UTC; 3s ago ←起動状態
 Main PID: 1442 (redis-server)
   CGroup: /system.slice/redis.service
           mq1442 /usr/bin/redis-server 127.0.0.1:6379

Sep 25 15:10:58 ip-172-31-28-241.ap-northeast-1.compute.internal systemd[1]: Starting Redis persistent key-value da.....
Sep 25 15:10:58 ip-172-31-28-241.ap-northeast-1.compute.internal systemd[1]: Started Redis persistent key-value dat...e.
Hint: Some lines were ellipsized, use -l to show in full.

動作確認

(1) プロセスの起動確認

 psコマンドでredisのプロセスが起動していることを確認します。

# ps -ef | grep redis | grep -v grep
redis     1442     1  0 15:10 ?        00:00:00 /usr/bin/redis-server 127.0.0.1:6379

(2) redis-cliコマンドでキー・バリューの操作確認

 Redis標準のコマンドラインツールであるredis-cliを利用してRedisが保持するキー・バリューの操作を行ってみます。 以下の操作の流れにあまり深い意味はありませんが、キーの取得、キー・バリューのセット、キーからバリューの取得、キー・バリューの削除、全キー・バリューの削除を試します

# redis-cli ←対話モードの開始
127.0.0.1:6379> keys * ←全キーを表示するが空
(empty list or set)
127.0.0.1:6379> set key1 100 ←キー:key1、バリュー:100をセットする
OK
127.0.0.1:6379> set key2 200 ←キー:key2、バリュー:200をセットする
OK
127.0.0.1:6379> set key3 300 ←キー:key3、バリュー:300をセットする
OK
127.0.0.1:6379> keys * ←全キーを表示するとkey1、key2、key3が表示される
1) "key2"
2) "key1"
3) "key3"
127.0.0.1:6379> get key2 ←キー:key2のバリューを表示する
"200"
127.0.0.1:6379> del key1 ←キー:key1を削除する
(integer) 1
127.0.0.1:6379> keys * ←全キーを表示するとkey1が表示されなくなる
1) "key2"
2) "key3"
127.0.0.1:6379> flushall ←全キーを削除する
OK
127.0.0.1:6379> keys * ←全キーを表示するが空
(empty list or set)
127.0.0.1:6379> exit ←対話モードの終了

参考にしたサイト

 rpmfind.netでRedisのRPMファイルを検索した結果のページです。