cygwinでredis-3.2.5コンパイル

(追記)これを書いたときは知らなかったのですが、Windows用のRedisがあるのでそれを使った方がいいと思います。
RedisをWindowsにインストール - Qiita


ちょっと苦労しました。

このバージョンではhiredisなどが追加されており、まとまった日本語の情報がないので一応書いておきます。

まずcygwinの必要なパッケージが無ければ入れておきます(apt-cygじゃなくてsetup.exeでもおそらく大丈夫)。
(もしapt-cygがいいなら「git clone https://github.com/transcode-open/apt-cyg.git」そしてapt-cygをPATHが通ったところにコピーで。)

apt-cyg install openssh automake gcc-core libevent2.0_5 libevent-devel ncurses libncurses-devel pkg-config make vim git procps emacs util-linux 
apt-cyg install ruby subversion 
apt-cyg install libgmp-devel libcrypt-devel curl
gem install bundler

まずダウンロード、

wget http://download.redis.io/releases/redis-3.2.5.tar.gz
tar zxf redis-3.2.5.tar.gz
cd redis-3.2.5

関連するヘッダとソースを以下のように修正します
(行番号はコピーしないで下さい。違うバージョンでうまく行かなかった場合はメッセージをよく見て修正して下さい)。
サブディレクトリ内で必要なものはmakeしておく。
(jemallocはうまくいかないので調査中)

grep "Data types" src/*
vi src/server.h

453 #ifdef __CYGWIN__
454 #ifndef SA_ONSTACK
455 #define SA_ONSTACK 0x08000000
456 #endif
457 #endif
458 
459 #if defined(__CYGWIN__)
460 #define strtold(a,b)    ((long double)strtod((a),(b)))
461 #endif
462 
463 /*-----------------------------------------------------------------------------
464  * Data types
465  *----------------------------------------------------------------------------*/

cd deps/
vi hiredis/net.c

52 #include "sds.h"
53 
54 /* Cygwin Fix */
55 #ifdef __CYGWIN__
56 #define TCP_KEEPCNT 8
57 #define TCP_KEEPINTVL 150
58 #define TCP_KEEPIDLE 14400
59 #endif
60 
61 /* Defined in hiredis.c */

# make lua hiredis linenoise geohash-int jemalloc
make lua hiredis linenoise geohash-int

cd ..
make

うまくいったらサーバー起動

find * -name 'redis-server*'
./src/redis-server.exe

別のターミナルでクライアント起動

./src/redis-cli.exe
127.0.0.1:6379> set lesson 1
OK
127.0.0.1:6379> get lesson
"1"

警告がけっこう出てましたが、とりあえず使えてますね


参考:
kakakikikekeのブログ: Cygwin上にRedisをインストール
Build redis-2.8 on Cygwin - Winse Blog (中国語)

(追記)jemallocが無いせいかはわかりませんが、redis-benchmarkなどをすると動作が不安定なことがわかりました。
個人的な趣味以外の使用はお控え下さい。