(十三)学習ノート: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 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)演算操作では、値は文字列タイプの数値でなければなりません.
  • keyに対応する値に1 incr keyを加算例えばincr age
  • key対応値を1 decr age例えばdecr age
  • に減算
  • keyに対応する値に整数incrby key num、例えばincrby age 10
  • を追加する.
  • keyに対応する値を整数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