読者です 読者をやめる 読者になる 読者になる

redis入門 データ型とその簡単な操作について

プログラミング

スポンサーリンク


どうも。データベースのredisについて、今日も書いていこうと思います。

redisは、データ型を持っています。

 

  • String もっとも基本的なデータ型。個々の要素を格納しておく。
  • List  複数の要素が順番に並べられている。一番右にデータを追加とか、一番左のデータを削除とか、いろんなことが出来る。
  • Set  複数の要素を管理できる。重複を許さない。
  • Sorted Set ソート済み集合。Setの特徴ももつが、並び替えなどが容易にできる。
  • Hash  連想配列とも。ラベルと値をセットで保持する。

 

とまぁそんなこといってもよくわからないと思うので、具体例を出しながらコマンド操作と一緒に、それぞれの型についてみていこうと思います。

 

1.String型

    主なコマンド

set key value   キーと値を格納できる。

get key     キーに対応した値をとることが出来る。

mset key value key value 複数のキーと値を格納できる。

mget key key       複数の、キーに対応した値をとることが出来る。

 

多分ですが、msetとかmgetの前のmってのは、manyの略かな?さて、実際にやってみましょう。

今回、名前と年齢、誕生日の格納を実際にやってみましょう。

 

こんな感じで、確かにしっかりと格納されていることがわかります。

前回のredisの記事でも少しふれましたが、incr/decrで1つ増やしたり減らしたり、incrby/decrbyで一気にいくつか増やしたり減らしたりできます。

やってみましょう。

 

はい。確かに年齢が指定した分だけ増えたり減ったりしています。

 

 

2.List型

 List型では、1つのkeyに大して、複数のvalueを割り当てることが出来ます。

   例えば、IT google yahoo apple facebook twitterとすると、ITというkeyで、後の5個のvalueを扱うことが出来ます。

 主なコマンド

lpush        1番左に追加

rpush          1番右に追加

lpop       1番左を削除

rpop       1番右を削除

lrange A B     A番目からB番目の要素を見る。すべての要素を見たいときは、0 -1とすればOK。

lindex key A   A番目の要素を見る。

llen  key          要素の大きさを見る。

という感じです。実際にやってみましょう。

追加と削除の画像が上ので、下のが要素の追加と長さ表示です。ちなみに、lindexとかllenのlってのは、Listの頭文字です。要素の添字は0から始まるので注意してください。

 

3.Set型

Set型は、集合の管理とかがすごくやりやすいです。コマンドを見た後、具体例で確認していきましょう。

 主なコマンド

 sadd                要素追加

 srem      要素削除

 smembers  一覧表示

 sunion     和集合表示

 sinter    積集合表示

 sdiff      差集合表示

 

具体例を見ていきましょう。A社とB社の情報機器を管理しているとします。追加と削除が行われているのがわかるかと思います。

A社とB社がどんな情報機器を使っているのか?というのを例にやってみます。

A社とB社どちらかが使っているのはsunion,A社もB社も使っているのはsinter, A社は使ってるけどB社は使ってないのはsdiffで知ることが出来ます。

 

ちなみに、sunion,sinter,sdiffの後にstoreをつけて、新しい集合の名前、集合1、集合2とすると、その積集合や和集合、積集合の要素がが新しい集合に格納されます。

こんな感じです。

 

 4.Sorted Set

値に対して数値をつけることにより、自動的に数値順に並び替えて格納される

zadd  追加

zrem  削除

zrange    一覧を見る

zrank   ある要素のランクを見る

zrank 集合名 withscores 数値とセットで一覧を見る

 

やってみましょう。いろんな人のテストの結果を格納してみます。

 

こんな感じですね。点数とセットで見ると、しっかり小さい順にソートされて格納されているのがわかるかと思います。ゲームのランキングとかを管理するときに便利かと思います。

ちなみに、大きい順に並び替えたいときは、zrevrangeに変えればOKです。

 

5.Hash型

String型は、1つのkeyに1つのvalueだったんですが、Hash型では、valueをkeyのように使い、さらにそれにまたvalueを対応させるなんていうことが出来てしまいます。

例えば、userというkeyがあるとして、そこにnameというvalueを入れます。そして、そのnameに Yukiを対応させることで、nameというkeyでいろいろなものを対応させることが出来ます。

 

主なコマンド

hset/hmset 値を格納/複数格納

hget/hmget   値を取得/複数取得

hlen     keyの数を調べる

hkeys        keyの一覧を見る

hvals    値の一覧を見る

hgetall            keyと値の一覧を見る

 

こんな感じになります。

みたらわかるように、値がないときは(nil)と返されます。

 

 

今までに見たもの全体共通のコマンド

keys *     現在あるkeyの一覧を表示

keys * 文字列*   ある文字列を含むkeyの一覧を表示

exists      存在していたら1を、なければ0を返す

del        keyを削除する

rename                 keyの名前を変更する

 

 

このように、今まで作ったデータ達をみたり、存在を確認したり、名前を変えることが出来ます。

 

sortコマンドについて

いろいろな並び替えが出来る。List型、Set型、Sorted Set型に対して選択できる。

例えば、List型でScoreを管理したしましょう。

普通にpushしていくと、見ての通り、入れた順番に並んでいるのがわかるかと思います。

 

これを並び替えるときに、sortを行います。普通にソートすると、小さいものから順に並びます。語尾にdescとつけると、大きいものから順番に並びます。

「成績上位者にしか興味ないぜ!」っていう時には、「sort score desk limit A番目から B人」っていう指定の仕方で抽出できます。

 

また、文字列も、語尾にalphaとつければ並び替えることが出来ます。先ほど作った、List型のITってやつの中身を並び替えてみましょう。

はい、しっかりアルファベット順に並んでいますね。

 

 

個々で紹介したもの以外にもとても便利な機能がたくさんあります。使いながらなれていってください。

ふぅ・・・ブログ始まって1番長い記事だ。

 

 

 

にほんブログ村 大学生日記ブログ 理系大学生へ
にほんブログ村

 

 

 

 

© 2016 Yuki Sako.