インストールしてみましょう。
# redis用のユーザーとディレクトリを追加
groupadd redis
useradd redis -g redis -M -s /sbin/nologin
mkdir -p /var/redis/{data,tmp}
mkdir -p /var/run/redis
mkdir -p /var/log/redis
chown -R redis:redis /var/redis/ /var/run/redis /var/log/redis
# Redisをダウンロードしてインストール
wget http://redis.googlecode.com/files/redis-2.6.12.tar.gz
tar zxvf redis-2.6.12.tar.gz
cd redis-2.6.12
make && make install
完了すると以下のコマンドが使えるようになります。
redis-check-aof redis-cli
redis-benchmark redis-check-dump redis-server
redis-server
redisサーバ起動
サーバを起動するコマンドです。実行するとコンソールを呼び出せるようになります。_._強制終了は Ctrl + C :データ保存されないこ多いので、redis-cliから終了しましょう。
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.6.12 (c6d4084b/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 3166
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
redis-cli
コンソール呼び出し
サーバのシャットダウンはコンソールから shutdown するとデータ永続化されるので、こちらを
使いましょう。
扱えるデータ型は主に以下。
- string
- list
- set
- sorted-set
- hash
いくつか見ていきましょう。
単純な文字列型を挿入、取得。
redis 127.0.0.1:6379> set test value複数登録するときは、
OK
redis 127.0.0.1:6379> get test
"value"
redis 127.0.0.1:6379> mset test value name masazblog
OK
redis 127.0.0.1:6379> mget test name
1) "value"
2) "masazblog"
型を取得。
redis 127.0.0.1:6379> type test
string
カウンターを使う。
redis 127.0.0.1:6379> incr counterこの数値計算は、DBデータにもそのまま使えます。
(integer) 1
redis 127.0.0.1:6379> incr counter
(integer) 2
redis 127.0.0.1:6379> get counter
"2"
redis 127.0.0.1:6379> set score 111
OK
redis 127.0.0.1:6379> get score
"111"
redis 127.0.0.1:6379> incr score
(integer) 112
redis 127.0.0.1:6379> incrby score 10
(integer) 122
redis 127.0.0.1:6379> decr score
(integer) 121
redis 127.0.0.1:6379> decrby score 20
(integer) 101
key一覧の表示(正規表現が使えます)
redis 127.0.0.1:6379> keys *
1) "test"
2) "name"
3) "score"
4) "sroce"
redis 127.0.0.1:6379> keys s*
1) "score"
2) "sroce"
存在確認
redis 127.0.0.1:6379> exists score
(integer) 1 ←ある
redis 127.0.0.1:6379> exists tttt
(integer) 0 ←ない
期限付きkey
redis 127.0.0.1:6379> set age 24
OK
redis 127.0.0.1:6379> expire age 8 ←keyの有効期間8秒
(integer) 1
redis 127.0.0.1:6379> exists age
(integer) 1
redis 127.0.0.1:6379> exists age ←8秒すぎると無効
(integer) 0
List型 [key] [value]
追加:(l/r)push ←lは左から、rは右から
削除:(l/r)pop ←lは左から、rは右から
redis 127.0.0.1:6379> rpush mycolor pink ←末尾に追加していく要素の削除
(integer) 1
redis 127.0.0.1:6379> rpush mycolor green
(integer) 2
redis 127.0.0.1:6379> rpush mycolor red
(integer) 3
redis 127.0.0.1:6379> rpush mycolor yellow
(integer) 4
redis 127.0.0.1:6379> rpush mycolor blue
(integer) 5
redis 127.0.0.1:6379> rpush mycolor purple
(integer) 6
redis 127.0.0.1:6379> lrange mycolor 0 5 ←要素の添字は0から。添字を指定して取得。
1) "pink"
2) "green"
3) "red"
4) "yellow"
5) "blue"
6) "purple"
redis 127.0.0.1:6379> lrange mycolor 0 -1 ←modの-1で指定することも可能。
1) "pink"
2) "green"
3) "red"
4) "yellow"
5) "blue"
6) "purple"
redis 127.0.0.1:6379> lrange mycolor 0 -1
1) "pink"
2) "green"
3) "red"
4) "yellow"
5) "blue"
redis 127.0.0.1:6379> lpop mycolor ←左端の要素削除
"pink"
redis 127.0.0.1:6379> lrange mycolor 0 -1
1) "green"
2) "red"
3) "yellow"
4) "blue"
redis 127.0.0.1:6379> lindex mycolor 2
"yellow"
redis 127.0.0.1:6379> ltrim mycolor 0 2
OK
redis 127.0.0.1:6379> lrange mycolor 0 -1
1) "green"
2) "red"
3) "yellow"
Set型
sadd:追加srem:削除
一覧:smembers
和集合:sunion
積集合sinter
差集合:sdiff
redis 127.0.0.1:6379> sadd myset1 a
(integer) 1
redis 127.0.0.1:6379> sadd myset1 b
(integer) 1
redis 127.0.0.1:6379> sadd myset1 c
(integer) 1
redis 127.0.0.1:6379> smembers myset1
1) "c"
2) "b"
3) "a"
redis 127.0.0.1:6379> sadd myset1 d
(integer) 1
redis 127.0.0.1:6379> smembers myset1
1) "c"
2) "b"
3) "d"
4) "a"
redis 127.0.0.1:6379> srem myset1 d
(integer) 1
redis 127.0.0.1:6379> smembers myset1
1) "c"
2) "b"
3) "a"
redis 127.0.0.1:6379> sadd myset2 b
(integer) 1
redis 127.0.0.1:6379> sadd myset2 c
(integer) 1
redis 127.0.0.1:6379> sadd myset2 d
(integer) 1
redis 127.0.0.1:6379> sadd myset2 e
(integer) 1
redis 127.0.0.1:6379> smembers myset1
1) "c"
2) "b"
3) "a"
redis 127.0.0.1:6379> smembers myset2
1) "c"
2) "b"
3) "e"
4) "d"
redis 127.0.0.1:6379> sunion myset1 myset2
1) "b"
2) "c"
3) "e"
4) "a"
5) "d"
redis 127.0.0.1:6379> sinter myset1 myset2
1) "c"
2) "b"
redis 127.0.0.1:6379> sdiff myset1 myset2
1) "a"
redis 127.0.0.1:6379> sunionstore myunion myset1 myset2
(integer) 5
redis 127.0.0.1:6379> smembers myunion
1) "b"
2) "c"
3) "e"
4) "a"
5) "d"
すごい簡単で便利。
最後にDB選択と永続化、トランザクション的なものについて見て行きましょう。
データベース選択
0~15が用意されている。redis 127.0.0.1:6379> select 0
redis 127.0.0.1:6379> select 1
データの保存
redis 127.0.0.1:6379> bgsave
データの保存先
redis起動ディレクトリの dump.rdb
データの保存を随時行いたい
AOF(同期書き込みサポート)を保存することになります。redis.confに以下の設定を行います。appendonly yes100倍くらい遅くなるので、安全を優先したい場合のみ使用しましょう。
トランザクション的なもの
複数の処理をまとめて行う。途中の終了した時のロールバックは無し。
multi処理
処理
…
exec / discard
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> incr counter
QUEUED
redis 127.0.0.1:6379> incr visitor
QUEUED
redis 127.0.0.1:6379> exec
1) (integer) 1
2) (integer) 1
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> incr counter
QUEUED
redis 127.0.0.1:6379> incr visitor
QUEUED
redis 127.0.0.1:6379> discard
OK
redis 127.0.0.1:6379> mget counter visitor
1) "1"
2) "1"
0 件のコメント:
コメントを投稿