ページ

2015年5月19日火曜日

新しい技術を学んでみる 3 - redis -

今回は「redis」を学んでみる。


redisとは・・・インメモリデータベース。早い!!
                            KVS(Key Value Store)のデータ。永続化もできる!!

らしい。

以下基本的な用語

・Data Type
 - String : 個々の要素

 - List : 順番に並べた複数の要素
  -- 時系列的なデータ

 - Set : 順不同の複数の要素、重複を許さない
  -- タグ、ソーシャルグラフ

 - Sorted Set : Setの特徴を持ちつつ個々の要素にスコア付き
  -- ランキング

 - Hash
  -- 連想配列


・サーバーの起動と終了
redis-server

・クライアントの起動と終了
redis-cli
> exit
> shutdown

・データベースの選択
> select (0〜10)※デフォルト0

・データの保存
> bgsave
 サーバーを立ち上げたディレクトリにdump.rdbができる


今回もvagrantで新規のCentOSを立ち上げて環境構築。
前回やったchefを使って環境構築してみる。

出来上がったレシピは以下の通り
bash 'redis_insall' do
  code <<-EOF
    wget http://download.redis.io/releases/redis-3.0.1.tar.gz
    tar xzf redis-3.0.1.tar.gz
    cd redis-3.0.1
    make
  EOF
end
ん〜。これなら普通にコマンド打った方が良さそう?
インストールできたので起動してみる。

[vagrant@localhost ~]$ redis-server
2486:C 19 May 13:37:02.328 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
2486:M 19 May 13:37:02.329 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
2486:M 19 May 13:37:02.329 # Redis can't set maximum open files to 10032 because of OS error: Operation not permitted.
2486:M 19 May 13:37:02.329 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 3.0.1 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 2486
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

2486:M 19 May 13:37:02.331 # Server started, Redis version 3.0.1
2486:M 19 May 13:37:02.331 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
2486:M 19 May 13:37:02.331 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2486:M 19 May 13:37:02.332 * DB loaded from disk: 0.001 seconds
2486:M 19 May 13:37:02.332 * The server is now ready to accept connections on port 6379

ちゃんと起動できている^^

別ターミナルからクライアント起動 & サーバーをシャットダウンしてみる。
[vagrant@localhost ~]$ redis-cli
127.0.0.1:6379> shutdown
not connected> exit

↓サーバー側
2486:M 19 May 13:44:56.240 # User requested shutdown...
2486:M 19 May 13:44:56.240 * Saving the final RDB snapshot before exiting.
2486:M 19 May 13:44:56.263 * DB saved on disk
2486:M 19 May 13:44:56.263 # Redis is now ready to exit, bye bye...


String型を出し入れしてみる
・基本的なコマンド
  set {key} {value} : keyとvalueのペアで保存
  get {key} : keyのvalueを取得
  ※複数バージョン
  mset {key} {value} {key} {value} ...
  mget {key} {key} ...
  ※特殊
  incr {key}  : 整数値をインクリメント
  decrby {key} {値} : 整数値を{値}の分だけデクリメント

127.0.0.1:6379> set name jf
OK
127.0.0.1:6379> get name
"jf"
127.0.0.1:6379> mset email default@email.com score 120
OK
127.0.0.1:6379> mget name email score
1) "jf"
2) "default@email.com"
3) "120"
127.0.0.1:6379> incr score
(integer) 121
127.0.0.1:6379> get score
"121"
127.0.0.1:6379> decrby score 10
(integer) 111
127.0.0.1:6379> get score
"111"
127.0.0.1:6379> 

とりあえず今回はここまで!!


0 件のコメント:

コメントを投稿