LoginSignup
37
38

More than 5 years have passed since last update.

MacにRedisをインストールして使ってみる

Last updated at Posted at 2015-08-30

ScalaのSprayでアプリを作るときに、セッション管理用のキャッシュサーバーがほしいなと思ってRedisを使ってみることにしました
今日始めて触るので間違ったことを書いてあったらご指摘下さい

1.brewでRedisをインストールする

まずはRedisをインストールしていきましょう
コマンドは

brew install redis

になります。

brew install redis
==> Downloading https://homebrew.bintray.com/bottles/redis-3.0.2.mavericks.bottle.tar.gz
######################################################################## 100.0%
==> Pouring redis-3.0.2.mavericks.bottle.tar.gz
==> Caveats

To have launchd start redis at login:
    ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don't want/need launchctl, you can just run:
    redis-server /usr/local/etc/redis.conf
==> Summary
🍺  /usr/local/Cellar/redis/3.0.2: 9 files, 892K

以上のように表示されていれば問題無いと思います

Redisがインストールされているかとバージョンの確認です

which redis-server                                                                                                                              
/usr/local/bin/redis-server
redis-server -v
Redis server v=3.0.2 sha=00000000:0 malloc=libc bits=64 build=1d187ed92c2a6b24

今回はRedisの自動起動ONにしないのでMacで自動起動設定したい方は、こちらの参考資料をご覧になって下さい
僕も基本ここを参考にさせて頂きました
Mac OS X(Mavericks)にRedisをインストール+動作確認

2.Redisを起動する

では早速Redisを起動してみます
コマンドは以下の通りです

redis-server

Nginxみたいに単純で良いですね
起動されているか確認するコマンドは

ps | grep redis-server

以下のように表示されれば起動しています

13051 ttys005    0:00.25 redis-server *:6379

RedisやmemcachedはKVS(key value store)と呼ばれていて、キーと値のセットでデータを格納する仕組みです
Mapや連想配列みたいなものと思っています

次にデータを登録してみましょう
Redisの対話モードを起動します
このように表示されます

redis-cli
127.0.0.1:6379>

データの登録方法は
set キー 値
というような感じで登録します

ではやってみましょう

127.0.0.1:6379> set scala happy-life
OK

OKが出たら登録されます

登録データを取得する場合は
get キー
で取得できます

127.0.0.1:6379> get scala
"happy-life"

おめでとうございます
Scalaを手に取ると幸せになれました

3.データを保存する

RedisはインメモリKVSといってメモリ上にデータを保持することによってデータのやり取りを高速に行うことが出来ますが、メモリ上に保持しているということは途中で落ちてしまうとデータは消えてしまいます

Redisがmemcachedと違うところは
Redisをctrl + cで終了した際に、redis-serverを実行したディレクトリにdump.rdbというファイルが作成されそこにデータが保持されます

サーバー起動中にsetでデータを追加してもdump.rdbにはデータは追加されませんが(confで設定可能)、サーバー起動中にデータを保存したい場合は以下のコマンドで保存できます

bdsave

「back ground save」
の略だと思われます

コマンド実行後にdump.rdbを確認するとデータが増えているのが確認できます

いちいちコマンド入力しないといけないのかと思いましたが
Redisには時間ごとに更新データを保存する機能があるようです

brewでインストールしたら、以下のファイル

/usr/local/etc/redis.conf

の中に

save 900 1
save 300 10
save 60 10000

という項目があると思います
これは上から
1回の更新があった場合15分後に保存
10回の更新があった場合5分後に保存
10000回の更新があった場合1分後に保存
という意味で、全てをコメントアウトすると自動保存がOFFになるとのことです

では自動保存が効いているか確認してみましょう
10件以上データを保存して5分ほど待ってみます

set key1 val1
set key2 val2
set key3 val3
set key4 val4
set key5 val5
set key6 val6
set key7 val7
set key8 val8
set key9 val9
set key10 val10
set key11 val11

10分後…

データが追加されて………なーーーーーい!!
これは話が違いますね

どういうことでしょうか
confは初期状態で、何もいじっていないのですが
確かにsaveの項目は有効になっていたはずです

起動時の設定などがあるのでしょか
まあkillコマンドでredisを終了させても最後の瞬間にdump.rdbに保存されてるようなので大丈夫でしょう(適当

最後に想定外なことも起きましたが
このようにRedisは結構簡単に導入できそうなので試してみてはいかがでしょうか

かなり雑な終わり方ですが、今度はSprayからRedisに値をセット、取得してみることにします
では

37
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
38