恥知らずのウェブエンジニア -web engineer, shameless

これは一歩を踏み出すことができない者たちのブログ

Redisをインストールと基本操作

開発環境でなんらかkvsを使いたいと思っていたところ、
WEB+DB PRESSでredisなるkvsが紹介されていたので、早速試してみる。

まずはインストール。
公式はコチラ
http://redis.io/

//redisをインストール
cd /usr/local/src

wget http://redis.googlecode.com/files/redis-2.6.10.tar.gz
tar xzf redis-2.6.10.tar.gz
cd redis-2.6.10
make
make install

redis-serverで起動、そしてコマンドラインから操作するには、redis-cliから行う。

//redis起動
redis-server

//redis-cli
redis-cli
 //終了
 shutdown
 //ディスクに書き出し
 bgsave

終了はredis-cliからshutdownしないと、メモリに残っているデータがなくなるとのこと。
shutdownするとbgsaveしてから終了するとのこと。


では次は実際にデータのやりとりをしてみる。
データの型は下記の種類があるそう。

データ型 概要
String キーにひも付いた値
List 順番に並べた複数の要素
Set 順不同の複数の集合を扱う。重複を許さない
Sorted Set Setの特徴を持ちつつ、スコアという値で個々の要素に順列をつける
Hash キーにひも付くデータとして、キーと値を扱う

Listはタイムライン的なもの、Sorted Setはランキング的なものに使えるそう。

では実際にそれぞれの動きを確認してみる。

■String

//値をset,get
redis > set name mogmog
OK
redis > get name
"mogmog"

//複数の値をset,get
redis > mset foo 1 moo 2
OK
redis > mget foo moo
1) "1"
2) "2"

//値が数値ならインクリメント、デクリメントが可能
redis > set num 1
OK
redis > incr num
(integer) 2
redis > get num
"2"
redis > decr num
(integer) 1
redis > get num
"1"
redis > incrby num 10
(integer) 11
redis > get num
"11"
redis > decrby num 30
(integer) -19
redis > get num


■List

//値追加、右/左から
R/LPUSH

//値所得、右/左から

//リスト表示
lrange 0 -1

redis > rpush mylist red
(integer) 1
redis > rpush mylist green
(integer) 2
redis > lpush mylist orange
(integer) 3
redis > lrange mylist 0 -1
1) "orange"
2) "red"
3) "green"

redis > lpop mylist
"orange"
redis > rpop mylist
"green"
redis > lrange mylist 0 -1
1) "red"

■Set

//値追加
SADD
//値削除
SREM
//値一覧
SMEMBERS

redis > sadd myset 1
(integer) 1
redis > sadd myset 2 3 4
(integer) 3
redis > smembers myset
1) "1"
2) "2"
3) "3"
4) "4"
redis > srem myset 3
(integer) 1
redis > smembers myset
1) "1"
2) "2"
3) "4"


//和集合(AまたはB)
SUNION
//積集合(AかつB)
SINTER
//差集合
SDIFF

redis > smembers myset
1) "1"
2) "2"
3) "3"
4) "4"
redis > smembers myset_1
1) "3"
2) "4"
3) "5"
4) "6"
redis > sunion myset myset_1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
redis > sinter myset myset_1
1) "3"
2) "4"
redis > sdiff myset myset_1
1) "1"
2) "2"

Sorted Set

//追加、削除
ZADD/ZREM

redis > zadd myzlist 1 mog
(integer) 1
redis > zadd myzlist 3 ban
(integer) 1
redis > zadd myzlist 6 hoge
(integer) 1
redis > zadd myzlist 2 don
(integer) 1
redis 127.0.0.1:6379> ZRANGE myzlist 0 -1
1) "mog"
2) "don"
3) "ban"
4) "hoge"


■Hash

//追加、削除
HSET,HDEL

redis > hset myhash key val
(integer) 1
redis > hget myhash key
"val"
redis > hmset myhash key val key_1 val_1 key_2 val_2
OK
redis > hmget myhash key key_1 key_2
1) "val"
2) "val_1"
3) "val_2"


以上です。
次は、phpからredisを操作してみよう。
http://redis.io/clients



感謝致します。
f:id:ogataka50:20130304003504j:plain