今回は「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ができる
以下基本的な用語
・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 件のコメント:
コメントを投稿