Redisラーニングおよびアプリケーションレコード(2)--共通データ型およびコマンド

9337 ワード

このセクションでは、Redisがサポートするデータ構造と一般的なコマンドについて説明します.
データ型
Redisは、文字、リスト、コレクション、続編、ハッシュテーブル、bit配列、スーパーログなど、さまざまなデータ型のストレージをサポートします.以下、それぞれ紹介します.
strings:通常文字を格納します.
Lists:リストは、通常、挿入された順序に従って整列されたチェーンテーブルです.リストの秩序性を利用して,メッセージキューをシミュレートすることができる.
Sets:集合する必要はなく、繰り返すことはできません.Setsは検索速度が最も速いデータ構造である.
Sorted sets:値とスコアが格納され、通常はスコアに基づいてソートされます.検索速度も非常に速い.
Hashes,ハッシュテーブルは,一連のキー値ペアを格納し,キーと値はstringsタイプである.ハッシュ・テーブルは、データ・オブジェクトを格納するのに適しています.
Bit arrays,バイナリ配列,暫定比最小の記憶空間.
HyperLogLogs:,比較的少ないので,興味のある読者はここhttp://redis.io/topics/data-types-intro#hyperloglogsを参考にすることができる.
 
Redis Key
Redis Keyについては、以下の点に注意してください.
1.KeyはBinary-safeで、stringsをkeyとしてもbit[]をkeyとしてもいいです.
2.Redis keyは最大512 M(Memcacheは1 Mのみ)をサポートしていますが、あまり長いkeyは推奨されません.これはメモリストレージが増加し、読み書き性能に影響を与えるためです.keyも短すぎることをお勧めしません.これは可読性が悪く、繰り返しやすいです.設計keyがデータを格納する場合は、一定の設計規範に従うことをお勧めします.
3.キーを設計するには、データ型とタイプの関係を表示することが望ましい.ユーザを格納するためのkeyのように、このように設計することができる.
set User:1000 "user1"
ユーザー権限のリストは、次のように定義できます.
sadd User:1000:Permissions "user-edit""user-delete""user-create"
 
共通コマンド
Redisがインストールされていない場合、try redisをオンラインで使用してRedisコマンドを実行することもできます.ここをクリックしてhttp://try.redis.io/に入ります.
1.文字列に関するコマンド
文字列はredisの最も基本的なデータ型であり、文字を格納するために使用されます.文字列はBinary safeで、byte[]配列を文字列に格納できます.
set/getは文字列を格納するために使用されます.
> set mykey somevalue

OK

> get mykey

"somevalue"

INCR/INCRBY/DECR/DECRBY用于对字符串做加减运算,这些命令会将strings类型的数据转换成整形,然后再进行加减运算。

Redis对数字的运算是原子性的,是很好的计数器。

> set counter 100

OK

> incr counter

(integer) 101

> incr counter

(integer) 102

> incrby counter 50

(integer) 152

 
mget/msetは複数のkeyに値を付与し、複数の値を付与しやすく、プログラム性能を向上させる.
> mset a 10 b 20 c 30

OK

> mget a b c

1) "10"

2) "20"

3) "30"

 
2.汎用命令
汎用コマンドは、すべてのデータ型に有効です.
DEL/EXISTS、キーの削除、キーの有無の判断
> set mykey hello

OK

> exists mykey

(integer) 1

> del mykey

(integer) 1

> exists mykey

(integer) 0

 
EXPIRES、キーの有効期限を設定します.
> set key some-value

OK

> expire key 5

(integer) 1

> get key (immediately)

"some-value"

> get key (after some time)

(nil)

 
TTL、クエリkeyの有効期限
 
> set key 100 ex 10

OK

> ttl key

(integer) 9

 
LLEN、クエリーには多要素データ型の長さが含まれます.リスト、set、sorted set、hashesに共通します.
> del mylist

(integer) 0

> llen mylist

(integer) 0

> lpop mylist

(nil)

 
ルールの自動作成/削除
複数要素データ型に要素を追加する場合(List,Set,SortedSet,Hashesなどを指す)、keyが存在する場合はkeyに要素を追加し、存在しない場合はkeyを作成する.
キーに要素を削除する場合は、キーが空の場合はキーを削除します.
 
> lput mylist 1

(integer) 1

> lpop mylist

(integer) 0

上のコマンドでは、mylistを作成し、mylistの長さを1にし、要素をポップアップした後、mylistが削除されます.
 
3.Listに関するコマンド
LPUSH/RPUSHは、リストの左側/右側から要素を追加します.この2つのコマンドは、複数の要素を一度に追加できます.
> rpush mylist A

(integer) 1

> rpush mylist B

(integer) 2

> lpush mylist first

(integer) 3

> lrange mylist 0 -1

1) "first"

2) "A"

3) "B"

LRANGEは、リストの左側から要素を取り、LANGEは3つのパラメータ、リスト名、インデックスの開始と終了を受信します.0は最初のインデックスを表し、-1は左と後ろのインデックスを表し、-2は最後から2番目のインデックスを表します.
> rpush mylist 1 2 3 4 5 "foo bar"

(integer) 9

> lrange mylist 0 -1

1) "first"

2) "A"

3) "B"

4) "1"

5) "2"

6) "3"

7) "4"

8) "5"

9) "foo bar"

 
LPOP/RPOP、リストの左側/右側から要素をポップアップします.コマンドが実行されると、ポップアップされた要素が返され、リストから削除されます.
> rpush mylist a b c

(integer) 3

> rpop mylist

"c"

> rpop mylist

"b"

> rpop mylist

"a"

 
BLPOP/BRPOPは、リストの左側/右側から要素をブロックしてポップアップします.
> brpop tasks 5

1) "tasks"

2) "do_something"

以上のコマンドはtasksから要素をポップアップし、tasksに要素がない場合は5 s後にnullを返します.時間パラメータが0に設定されている場合、要素が返されるまで永続的に待機します.
またbrpop/lblpopは、1つのリストが戻るまで複数のリストパラメータを受信し、すべてのリストが空であればブロックに入る.この特性を用いて,メッセージキュー(ブロックキュー)をシミュレートすることができる.ブロックキューのシミュレーションについては,後述する.brpop/lblpopの戻り値にはlist名と値が含まれます.
 
LTRIMは、リストの左側から要素を切り取り、余分な要素を除去します.このコマンドは、トップページにtop情報を表示する場合(例えば、企業ニュースの上位10件、最近発表された上位10人のユーザーのコメントを表示する場合)にLTRIMを使用して実現するのに役立ちます.
> rpush mylist 1 2 3 4 5

(integer) 5

> ltrim mylist 0 2

OK

> lrange mylist 0 -1

1) "1"

2) "2"

3) "3"

 
4.Hashesに関するコマンド
Hashesは一連のキー値ペアを格納し、Hashesはオブジェクトを格納するのに適しています.例えば、ユーザー情報をHashesに格納することができます.
 
hmset/hmget Hashes keyに複数の値を与える/Hashesから複数の値を取る
> hmset user:1000 username antirez birthyear 1977 verified 1

OK
> hmget user:1000 username birthyear no-such-field

1) "antirez"

2) "1977"

3) (nil)

 
hget/hgetall、Hashesから1つの値/すべての値をとる
> hget user:1000 birthyear

"1977"

> hgetall user:1000

1) "username"

2) "antirez"

3) "birthyear"

4) "1977"

5) "verified"

6) "1"

hincrby、fieldの値を増やします.
> hincrby user:1000 birthyear 10

(integer) 1987

> hincrby user:1000 birthyear 10

(integer) 1997

 
5.Setに関するコマンド
Setは一連のstringsの集合であり,彼らは無秩序である.
sadd/sismember/smembersは、要素がSetのメンバーであるか否かを判断するために、Setのすべてのメンバーを取得するために、Setに要素を追加します.
> sadd myset 1 2 3

(integer) 3

> smembers myset

1. 3

2. 1

3. 2


> sismember myset 3

(integer) 1

> sismember myset 30

(integer) 0

sinter,複数のSetの交差をとる
> sadd set1 1 2 3 4
(integer) 4
> sadd set2 2 4 5 7
(integer) 4

>sinter set1 set2
1) "2"
2) "4"

spop/srandmember/sunionstore/scard、集合からランダムに(重複しない)要素を取る/集合からランダムに(重複可能な)要素を取る/ある集合を別の集合にコピーする/集合の基数を取る(要素個数)
 
6.Sorted Setに関するコマンド
Sorted Setはsetとhashesの間のデータ構造であり、sorted setの要素は再送信できず、scoreと値が格納され、集合はscoreに基づいてソートされ、scoreが等しい場合は要素のアルファベット順にソートされる.
Sorted Setは、2つのオブジェクトのグループ間の関連付けに使用できます.たとえば、ユーザーと部門間の関連付けを確立するには、部門idをscoreとし、ユーザーidを値としてsorted setに格納します.
 
zadd、sorted setに要素を追加し、一度に複数の要素を追加できます.
> zadd hackers 1940 "Hedy Lamarr" 1936 "Alan Turing" 1952 "Alex Hu"

(integer) 3

zrange/zrevrange、sorted setの要素を取得します./sorted setの要素を逆順序で取得します.
> zrange hackers 0 -1

1) "Alan Turing"

2) "Hedy Lamarr"
3) "Alex Hu"
> zrevrange hackers 0 -1

1) "Alex Hu"

2) "Hedy Lamarr"
3) "alan Turing"
 

この2つのコマンドにwithscoresを付けてscore情報を表示できます
> zrange hackers 0 -1

1) "Alan Turing"
2)1936 3) "Hedy Lamarr"
4) 1940
5) "Alex Hu"
6) 1952

zrangebyscoreは、score範囲に基づいてsorted set要素を取得します.次のコマンドは、誕生日が1950未満の要素を取得します.-infは負の無限大を表します.
> zrangebyscore hackers -inf 1950

1) "Alan Turing"

2) "Hedy Lamarr"

3) "Claude Shannon"

4) "Alan Kay"

5) "Anita Borg"

zremrangebyscore、scoreに基づいて要素を除去します.次のコマンドでは、生年月日1940および1960の要素を削除します.
> zremrangebyscore hackers 1940 1960

(integer) 4

 
zrand/zrevrand、要素の位置を取得します./要素の位置を降順で取得します.
> zrank hackers "Anita Borg"

(integer) 4

Redix 2.8から、scoreが同じで、値が異なる要素をsorted setに挿入できます.これらの要素はscoreが同じなので、値に基づいてソートされます.
zrangebylex/zrevrangebylex/zrevrangebylex/zlexcount、これらのコマンドはそれぞれ文字ソートのsetを操作するので、zrangebylex/zrevrangebylexは文字に基づいてsorted setの要素を取得することが不思議です.zrevrangebylexは文字に基づいて要素を除去し、zlexcountは要素を取得する個数である.
> zadd hackers 0 "Alan Kay" 0 "Sophie Wilson" 0 "Richard Stallman" 0

  "Anita Borg" 0 "Yukihiro Matsumoto" 0 "Hedy Lamarr" 0 "Claude Shannon"

  0 "Linus Torvalds" 0 "Alan Turing"


> zrangebylex hackers [B [P

1) "Claude Shannon"

2) "Hedy Lamarr"

3) "Linus Torvalds"


redis> ZADD myzset 0 a 0 b 0 c 0 d 0 e
(integer) 5
redis> ZADD myzset 0 f 0 g
(integer) 2

 
 
紙面に限られ、Redisの命令もいくつかあります.ここでは言及されていません.必要に応じてここにhttp://redis.io/commandsに行って調べることができます.
次はjedisフレームワーク、JavaベースのRedisクライアントについてご紹介します.