(十三)学習ノート:Redisデータベースまとめ
6848 ワード
一.Redisデータベースの概要
REmote DIctionary Server(Redis)は、Salvatore Sanfilippoによって書かれたkey-valueストレージシステムです.Redisは、ANSI C言語を使用して作成され、BSDプロトコルに準拠し、ネットワークをサポートし、メモリベースでも持続可能なログ型、Key-Valueデータベースであり、複数の言語のAPIを提供しています.値(value)は、文字列(String)、ハッシュ(Map)、リスト(list)、セット(sets)、およびシーケンスセット(sorted sets)などのタイプであることができるため、通常、データ構造サーバと呼ばれる.
二.Redisのデータ型
redisには、String(文字列)、hash(ハッシュ)、list(リスト)、set(集合)zset(sorted set:秩序集合)の5つのデータ型があります.redisコマンド公式サイトアドレス:www.redis.cn/commands.html
三.Redisのキーの操作
(1)所与のパターンに適合する全てのkey
(2)あるキーが存在するか否かを判断し、戻り値1が存在しない場合戻り値0
注意:変更したkey名が既に存在する場合、上書きされます.
(12)現在のデータベースのキーを他のライブラリに移動する
四.String文字列タイプ
stringタイプはredisの最も基本的なデータ型であり、最大収容可能なデータ長は512 MBのデータである.(1)セットキー値 keyに対応する値に1 key対応値を1 に減算 keyに対応する値に整数 を追加する. keyに対応する値を整数 だけ減少する.
(11)追加値
五.Hashハッシュ
Hashはstringタイプのfieldとvalueのマッピングテーブルで、hashは特にオブジェクトを格納するのに適しています.マスター構造:
(1)単一値
六.Listリスト
redisリストは簡単な文字列リストで、挿入順に並べてリストのヘッダまたは末尾にデータを挿入できます.(1)ヘッダ挿入値
七.セット
RedisのSetはString型の無秩序集合である.集合メンバーは一意です.これは、集合に重複するデータが表示されないことを意味します.(1)追加要素
八.ZSet秩序集合
Redis秩序化集合は、集合と同様にstringタイプ要素の集合であり、重複するメンバーは許可されません.異なるのは、各要素がdoubleタイプのscoreウェイト(スコア)に関連付けられていることです.redisは,重みを介して集合中のメンバーを小さいものから大きいものに並べ替える.秩序化された集合のメンバーは一意ですが、重み(score)は繰り返すことができます.(1)追加値
REmote DIctionary Server(Redis)は、Salvatore Sanfilippoによって書かれたkey-valueストレージシステムです.Redisは、ANSI C言語を使用して作成され、BSDプロトコルに準拠し、ネットワークをサポートし、メモリベースでも持続可能なログ型、Key-Valueデータベースであり、複数の言語のAPIを提供しています.値(value)は、文字列(String)、ハッシュ(Map)、リスト(list)、セット(sets)、およびシーケンスセット(sorted sets)などのタイプであることができるため、通常、データ構造サーバと呼ばれる.
二.Redisのデータ型
redisには、String(文字列)、hash(ハッシュ)、list(リスト)、set(集合)zset(sorted set:秩序集合)の5つのデータ型があります.redisコマンド公式サイトアドレス:www.redis.cn/commands.html
三.Redisのキーの操作
(1)所与のパターンに適合する全てのkey
keys * #
keys *value* # value
keys value?? # value
exists key
を検索する.keys h?llo hello/hallo/hxllo (? )
keys h*llo hello/hllo/haaaallo (* )
keys h[ab]llo hallo/hbllo
keys h[^a]llo a :hbllo,hbllo
keys h[a-z]ello a z
(2)あるキーが存在するか否かを判断し、戻り値1が存在しない場合戻り値0
type key
例えばexists name#nameはデータベースに追加されたキー(3)ビューキーに対応するvalue値のタイプdel key1 [key2, ...]
例えばtype name(4)削除キーに対応する値expire key seconds
例えばdel name age sex(5)設定期限切れ時間間秒単位ttl key
例えばexpire name 10#10秒後期限切れ(6)有効期限pttl key
を秒単位で返します.キーが存在しない場合、または有効期限が切れた場合、戻り-2キーが存在し、有効期限が設定されていない場合(永続的に有効)、戻り-1を返します.例えば、ttl name(7)がミリ秒単位で返却する期限切れ時間persist key
例えばpttl name(8)キャンセル設定の期限切れ時間select 0 # 0 , 0-15
例えばpersist name(9)切替データベースflushdb # key
(10)クリアデータベースflushall # 0-15 key
rename key newKey
(11)修正keyの名前move key dbname # dbname (0-15)
例えばrename name newName注意:変更したkey名が既に存在する場合、上書きされます.
(12)現在のデータベースのキーを他のライブラリに移動する
randomkey
例えばmove name 1(13)現在のデータベースのキーset key value
をランダムに返す四.String文字列タイプ
stringタイプはredisの最も基本的なデータ型であり、最大収容可能なデータ長は512 MBのデータである.(1)セットキー値
set key seconds value
例えば、set name zhangsan(2)セットキー値と期限切れ時間setnx key value
例えば、set name 10 zhangsan(3)キーが存在しない場合にセットキー値mset key value [key value ....]
例えば、setnx name wangow(4)セットキー値setrange key offset value
例えば、mset name zhangsan age 19 sex w(5)セットキーの部分文字列セット値get key
offが現在のキーに対応するstringよりも長い場合、では、このstringの後に0を補充してoffsetに達します.例えば、name=zhangsan、setrange name 5 AAを実行すると、結果としてzhangAAn(6)がキー取得値mget key [key2 ...]
、例えばget name(7)がkeyに基づいて複数の値getrange key start end
を取得する.だから-1は最後の文字で、-2は最後から2番目で、このように押します.この関数は範囲外のリクエストを処理する場合,string内に結果を制限する.たとえば、getrange name 3 6(9)指定したkeyに値を設定し、古い値をgetset key value
に戻します.たとえば、getset name lisi(10)演算操作では、値は文字列タイプの数値でなければなりません.incr key
を加算例えばincr age decr age
例えばdecr age incrby key num
、例えばincrby age 10 decrby key num
、例えばdecrby age 10 (11)追加値
append key value
例えばapeend name aaa#aaaaaを1つ追加し、追加後文字列の長さ(12)取得値を返す長さstrlen key
例えばstrlen name五.Hashハッシュ
Hashはstringタイプのfieldとvalueのマッピングテーブルで、hashは特にオブジェクトを格納するのに適しています.マスター構造:
key{
field:value,
field:value,
...
}
(1)単一値
hset key field value
の設定例えばhset myHash name zhangsan(2)複数値hmset key field value [field value ...]
の設定例えばhmset myHash name shangsan age 10 sexw(3)hashテーブルで指定されたフィールドの値にnum hincrby key field num
を追加num hincrbyfloat key field num
例えばhincrby myHash age 10(4)hashテーブルで指定されたフィールドのデータに浮動小数点数hsetnx key field value
を追加例えばhincrbyfloat myHash score 10.2(5)hget key field
、例えばhsetnx myHash name lisi(6)取得単一値hmget key field [field ....]
、例えばhget myHash name(7)取得複数値hgetall key
、例えばhmget myHash name age sex(8)取得すべてのfieldおよびvalue hkeys key
、例えばhgetall myHash(9)取得すべてのfield hvals key
、例えばhkeys myHash(10)取得すべての値を取得するhlen key
例えばhvals myHash(11)キー値ペアを取得する個数hexists key field
例えばhlen myHash(12)fieldが存在するか否かを判断するhdel key field [field ....]
例えばhexists myHash name(13)削除field hstrlen key field
例えばhdel myHash name age sex(14)あるfieldの値を返す長さlpush key value value2 ...
例えばhstrlen myHash name六.Listリスト
redisリストは簡単な文字列リストで、挿入順に並べてリストのヘッダまたは末尾にデータを挿入できます.(1)ヘッダ挿入値
lpushx key value
、例えばlpush mylist name 1 name 2 name 3(2)リストが存在する場合はリストヘッダ挿入値rpush key value1 value2 ...
、例えばlpushx mylist name 4(3)リスト末尾挿入値rpushx key value
、例えば、rpush mylist name 5(4)リストが存在する場合はリスト末尾挿入値linsert key before/after value insertValue
、例えば、rpushx mylist name 7(5)指定位置前、値lset key index value
を挿入します.たとえば、linsert mylist before/after name 1 name 100(6)指定したインデックスの要素を設定する値lpop key
インデックスが0から順次増加します.-1は、最後の例を表す:lset mylist 0 age 1#インデックスを0に変更したage 1(7)削除してリストに戻る最初の要素rpop key
、例えば、lpop mylist(8)削除してリストに戻る最後の要素lrange key index endindex
、例えば、rpopmylist(9)戻りリストで指定したインデックス範囲内の値ltrim key start end
、例えば、range mylist 0-1#すべてを表示する(10)切り取りリストllen key
例えば、ltrim mylist 0 2#0-2(2を含む)の位置のみを残す要素(11)戻りリストの値の個数lindex key index
例えば、llen mylist(12)戻りリストで指定されたインデックスの値sadd key member [member ....]
例えば、lindex mylist 0七.セット
RedisのSetはString型の無秩序集合である.集合メンバーは一意です.これは、集合に重複するデータが表示されないことを意味します.(1)追加要素
smembers key
例えばsadd myset zhangsan lisi wangbu(2)戻り集合内のすべての要素scard key
例えばsmembers myset(3)戻り要素の個数spop key
例えばscard myset(4)戻り集合内の1つのランダム要素srandmember key count
例えばspop myset(5)戻り集合内の1つ以上のランダム要素(デフォルトは1つ)srem key member [member ...]
例えばsrandmember myset 2(6)除去集合のうちの1つまたは複数のメンバsinter key1 key2
例えばsrem myset zhangsan lisi wangwu(7)複数の集合の交差sdiff key1 key2
例えばsinter myset 1 myset 2(8)複数の集合の差分sunion key1 key2
例えばsdiff myset 1 myset 2#myset 1がありmyset 2が存在しない(9)複数の集合の並列sismember key member
例えばsunion myset 1 myset 2(10)ある要素がセット中にあるかどうかを判断するzadd key score member [score member ...]
例えばsismember myset zhaoliu#zhaoliuがmyset中にあるかどうかを判断し、戻り1が存在し、戻り0が存在しない八.ZSet秩序集合
Redis秩序化集合は、集合と同様にstringタイプ要素の集合であり、重複するメンバーは許可されません.異なるのは、各要素がdoubleタイプのscoreウェイト(スコア)に関連付けられていることです.redisは,重みを介して集合中のメンバーを小さいものから大きいものに並べ替える.秩序化された集合のメンバーは一意ですが、重み(score)は繰り返すことができます.(1)追加値
zincrby key score member
例えばzadd myzset 1 zhangsan 3 lisi 2 wangwu 4 zhaoliu(2)対応する重み値をincrement zcard key
に追加する例:zincrby myzset 20 lisi(3)コレクションを表示する要素個数zrange key start end
例:zcard myzset(4)指定範囲を返す要素zrange key start end withscores
例:zrange myzset 0-1(5)指定要素と重み値zscore key member
例:zrange myzset 0-1 withscores(6)たとえば、zscore myzset zhangsan(7)は、minとmaxの間のscoreの個数zcount key min max
を返します.たとえば、zcount myzset 0 5