RHELに最新バージョンのRedisをソースからコンパイルしてインストールした


0. 前提

2020/4/22時点
- RHEL7.6のAMI(ちょっと古い。8.1が最新のようです。)
- Redis5.0.8(この記事を書いている時点での最新)

1. EC2インスタンス起動

1.1. AMI

東京リージョンで「RHEL 7.6」でAMIを検索すると、

RHEL-7.6_HVM_GA-20190128-x86_64-0-Hourly2-GP2
ami-00b95502a4d51a07e
Provided by Red Hat, Inc.

が見つかりますので、これを選択します。

1.2. インスタンスタイプ

t3.small (適宜サイジングしてください)

1.3. セキュリティグループ

tcp/6379をオープン

2. Redisインストール

2.1. ssh接続

RHEL7.6のAMIのユーザはec2-userです。
ssh -i private.pem ec2-user@[public ip]

2.2. gccインストール

sudo yum -y install gcc
コンパイルに必要です。
最後に

Complete!

が出てれば成功。

2.3. Redisダウンロード

curl http://download.redis.io/releases/redis-5.0.8.tar.gz -o redis-5.0.8.tar.gz

redis-5.0.8.tar.gzファイルが存在していれば成功。

2.4. アーカイブの展開

tar zxvf redis-5.0.8.tar.gz

redis-5.0.8ディレクトリが存在していれば成功。

2.5. コンパイル

cd redis-5.0.8
make

zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

みたいなエラーが出たときは、下記記事を参考にして、
make distclean
してから
make
をやり直す。

(参考)
Redis使おうとしていろいろやったメモ
https://qiita.com/A-gen/items/345c07d830205a7ea6cb

makeの終わりの方に、

Hint: It's a good idea to run 'make test' ;)
って出力されたら成功。でも、
make test
してみたけどエラーになった。。

src下にバイナリが配置される

3. 動作確認

3.1. Redis Serverの起動

src/redis-server &
Redis Serverが起動する

3.2. Redis CLIからの接続

src/redis-cli

[ec2-user@ip-172-30-1-243 redis-5.0.8]$ src/redis-cli
127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> shutdown
16077:M 22 Apr 2020 06:52:31.131 # User requested shutdown...
16077:M 22 Apr 2020 06:52:31.131 * Saving the final RDB snapshot before exiting.
16077:M 22 Apr 2020 06:52:31.133 * DB saved on disk
16077:M 22 Apr 2020 06:52:31.133 # Redis is now ready to exit, bye bye...
not connected> exit

4. 余談

make installしてみたら

デフォルトでは/usr/local/binにインストールされるようです。

[ec2-user@ip-172-30-1-243 redis-5.0.8]$ sudo make install
cd src && make install
make[1]: Entering directory `/home/ec2-user/redis-5.0.8/src'

Hint: It's a good idea to run 'make test' ;)

INSTALL install
INSTALL install
INSTALL install
INSTALL install
INSTALL install

make[1]: Leaving directory `/home/ec2-user/redis-5.0.8/src'
[ec2-user@ip-172-30-1-243 redis-5.0.8]$ which redis-server
/usr/local/bin/redis-server
[ec2-user@ip-172-30-1-243 redis-5.0.8]$ which redis-sentinel
/usr/local/bin/redis-sentinel