tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【redis】redisを超おさらい。CentOS 6.2にかんたんにインストールから起動、set、getを確認

はじめに

いまさらのいまさらですが、redisを入れてみてから起動して確認するまでをかんたんにおさらい。
redisは入れるのも確認も簡単ですね╭( ・ㅂ・)و ̑̑ グッ

今回入れるのはCentOS 6.2です。

$ cat /etc/redhat-release 
CentOS release 6.2 (Final)

アジェンダ

  1. redis入れる
  2. 設定する
  3. 起動&確認してみる
  4. 起動スクリプト作成

1. redisとは

いまさらですが一応ブログの入りぽく、ということで。。。
説明下手なので参考サイトをまんま拝借させて頂きました。

  • データはメモリ上に入っている。インメモリデータベース。
  • ディスクにデータを適当なタイミングで書き込み可能(永続化できる)。
  • Key-Valueストア。キーと、それに対応したValueから構成される。ValueにはStringやListなど様々な型が使える。
  • Github、stackoverflow、ニコ生などで採用実績がある。
  • 初めて登場したのは2009年4月。ネット上の記事は2011年頃のをよく見る。
  • API一覧はここ。Command reference – RedisまたはKOSHIGOE学習帳 - [KVS][Redis] Redis コマンド一覧。

1. redis入れる

これはまんまやるだけですね

$ cd /usr/local/src/
$ sudo wget http://download.redis.io/releases/redis-2.8.12.tar.gz
$ sudo tar xzf redis-2.8.12.tar.gz
$ cd redis-2.8.12/
$ make make
$ sudo make install

補足

他のサイトなど参考にするとredisの前に下記もいれる必要があるかもです。
自分はすでに入っていたので今回にはいれてません

$ sudo yum -y install gcc make

2. 設定する

設定ファイルはredisを展開したディレクトリにいるのでコピーして使います。

設定ファイル編集
# confファイルを確認
$ pwd
/usr/local/src/redis-2.8.12

$ ls -al re*
-rw-rw-r-- 1 root root 31209 Jun 23  2014 redis.conf

# オリジナルは残しつつconfファイル作成
$ sudo mkdir /etc/redis
$ sudo cp -ap redis.conf /etc/redis/6379.conf

# 設定編集
# 設定項目のそれぞれの意味は下記に書いたのでそちらを参考に。
$ sudo vi /etc/redis/6379.conf
---- vi編集 ----
daemonize no

# daemonize yesにしたとき忘れないように念のため
pidfile /var/run/redis_6379.pid

port 6379

timeout 60

loglevel debug

logfile "/var/log/redis/6379.log"

databases 16
---------------


# 設定ファイルに合わせてディレクトリつくっておいたり
$ sudo mkdir /var/log/redis
設定補足

設定について書いておきます。最初はこのあたりだけで良いかと。

項目 説明
daemonize [yes/no] デフォルトはno。デーモンとして動作させたい場合はyes。またその場合はpidファイルのしても忘れずに daemonize no
pidfile [filepath] デーモンとして起動するときにpidを書き出すファイル pidfile /var/run/redis_6379.pid
port [portnumber] コネクションを受け付けるポート。デフォルト6378 port 6379
timeout [N秒] N秒数間コマンドが送信されなければクライアントとの通信を切断。0を指定するとタイムアウト無し設定 timeout 60
loglevel [level] サーバのログの情報量をdebug/verbose/notice/warningのいずれかで設定。値を見たらなんとなくわかるかと。 loglevel debug
logfile [filepath] ログファイルの指定。stdoutを指定すると標準出力に。stdout指定&daemonize中は /dev/null行きなので注意 logfile "/var/log/redis/6379.log"
databases [num] RedisはDB名というものがなく番号で管理されている。そのデータベースの番号。databases 16と指定した場合はデフォルトで0〜15のDB番号を使用できる。デフォルトのデータベースは0 databases 16

スナップショットの設定など、他も参考にしたい場合は下記が参考になりました。

3. 起動&確認してみる

redisの起動と確認にはserverとclientを立ち上げます。
background起動(daemonize)ではなくそのまま立ち上げてみるため
serverとclientをそれぞれ別のターミナルで立ち上げて確認します。

redis-server起動

$ sudo redis-server /etc/redis/6379.conf
補足1

daemonize yesで起動した場合にredis-serverを終了するには、
psなどでプロセスを確認してkillで落とすか、pidfileも指定してるはずなので下記のようにします。

$ sudo kill `cat /var/run/redis_6379.pid`
補足2

当たり前ですがログファイルの場所に権限がない場合なんかはsudoやrootで行ってください

$ redis-server /etc/redis/6379.conf 
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 103
>>> 'logfile "/var/log/redis/6379.log"'
Can\'t open the log file: Permission denied

redis-cliでの対話モード確認

確認は主にclientから確認します。
key-valueのデータの確認に簡単なset-getをします。

# 起動
$ redis-cli 
redis 127.0.0.1:6379> 

# set-getを確認してみる
redis 127.0.0.1:6379> set test hoge
OK

redis 127.0.0.1:6379> get test
"hoge"

# 複数setしてkeyの一覧を見てみる
redis 127.0.0.1:6379> set name fuga
OK

redis 127.0.0.1:6379> keys *
1) "name"
2) "test"

# setした値に有効期限(10秒)をつけてみる
redis 127.0.0.1:6379> setex name 10 piyo
OK

redis 127.0.0.1:6379> get name # 10秒未満
"piyo"

redis 127.0.0.1:6379> get name # 10秒経過
(nil)


# 終了
redis 127.0.0.1:6379> exit

redis-cliでのコマンドライン確認

$ redis-cli -p 6379 set test fuga
OK

$ redis-cli -p 6379 get test
"fuga"

4. 起動スクリプト作成

起動スクリプトを作成します。
daemonizeしていればbackgroundで起動します。

# 起動スクリプトをutilからコピー
$ cd /usr/local/src/redis-2.8.12/
$ sudo cp -ap utils/redis_init_script /etc/init.d/redis_6379

# 起動してみる
$ sudo /etc/init.d/redis_6379 start
Starting Redis server...

まとめ

redisって何度か入れてますが、ほんと簡単で試しやすくて良いですよねー!
いろいろ勉強すると奥が深いミドルウェアですがちょっと試すにもすいすいです
( ・ㅂ・)و ̑̑ グッ