文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

macでredis serverをインストールせずにredis-cliのバイナリをビルドしてプロジェクトに組み込む

実は単独のバイナリとしてプロジェクトに組み込めます。


f:id:treeapps:20180418114029p:plain

redis-cliですが、macの場合はbrew install redis-cli等と試みてもインストールできません。

代わりにbrew install redisでredisサーバごとインストールすると、その中の1機能としてredis-cliが付いてきます。しかし、昨今のredis環境はほぼdocker化しており、ローカルにredisサーバ等はインストールしたくありません。

そこで、できるだけ標準の仕組みでredis-cliのバイナリを生成、プロジェクトに組み込めないか?と思い、実際に試してみたところ、できました。

環境

OS macOS high sierra
redisバージョン v4

redis-cliのバイナリ生成手順

redisのソースコードをダウンロードする

公式ページからダウンロードURLをコピってきます。
Redis

$ wget http://download.redis.io/releases/redis-4.0.10.tar.gz
$ tar zxf redis-4.0.10.tar.gz

makeする

$ cd redis-4.0.10
$ make

makeが成功すると、srcディレクトリに各種バイナリが生成されます。

$ ll
total 584
-rw-r--r--    1 tree  wheel   158K  6 13 20:02 00-RELEASENOTES
-rw-r--r--    1 tree  wheel    53B  6 13 20:02 BUGS
-rw-r--r--    1 tree  wheel   1.8K  6 13 20:02 CONTRIBUTING
-rw-r--r--    1 tree  wheel   1.5K  6 13 20:02 COPYING
-rw-r--r--    1 tree  wheel    11B  6 13 20:02 INSTALL
-rw-r--r--    1 tree  wheel   4.1K  6 13 20:02 MANIFESTO
-rw-r--r--    1 tree  wheel   151B  6 13 20:02 Makefile
-rw-r--r--    1 tree  wheel    20K  6 13 20:02 README.md
drwxr-xr-x   12 tree  wheel   408B  8  2 01:46 deps
-rw-r--r--    1 tree  wheel    57K  6 13 20:02 redis.conf
-rwxr-xr-x    1 tree  wheel   271B  6 13 20:02 runtest
-rwxr-xr-x    1 tree  wheel   280B  6 13 20:02 runtest-cluster
-rwxr-xr-x    1 tree  wheel   281B  6 13 20:02 runtest-sentinel
-rw-r--r--    1 tree  wheel   7.4K  6 13 20:02 sentinel.conf
drwxr-xr-x  198 tree  wheel   6.6K  8  2 01:47 src ← ここ!
drwxr-xr-x   12 tree  wheel   408B  6 13 20:02 tests
drwxr-xr-x   19 tree  wheel   646B  6 13 20:02 utils

redis-cliバイナリだけ抽出する

redis-cliは以下に生成されています。

$ ll src/redis-cli
-rwxr-xr-x  1 tree  wheel   169K  8  2 01:47 redis-cli

例えばこれを/tmpにコピーします。

$ cp src/redis-cli /tmp

ではこのバイナリを直接実行し、動作確認してみます。

$ ./redis-cli --version
redis-cli 4.0.10
$ ./redis-cli
127.0.0.1:6379> keys *
1) "TEST::com.example.api.repository.database.PrefectureRepository.findAll"
2) "spring:session:sessions:825e37c4-fae1-4b86-affb-8b5b3398e9c5"

どうやらちゃんと動くようです。これでいちいちローカルにredisサーバをインストールしなくて済みますね。

しかもこのバイナリをプロジェクトに組み込んでしまえば、gitで全員に同じバージョンのredis-cliを配布する事も可能になります。