RedisにおけるKeyに関する共通命令の詳細

7060 ワード

Redisは、ANSI C言語を使用して作成され、ネットワークをサポートするオープンソースであり、memcacheよりもRedisでメモリベースで永続化可能なログ型、Key-Value型のNoSQLデータベースを実現し、RedisではKeyのタイプも豊富である.そこで広く生産環境で使用されているが,ここではRedisにおけるKeyに関する一般的な命令について述べる.
まず、Redisでキーを押すと、Redisのキーは文字列タイプですが、キーには境界文字("")を含めることはできません.キーはbinary safeの文字列ではありませんので、「myキー」や「mykey」のようにスペースや改行を含むキーは許されませんので、使用するときはキーの名前を複雑にしないことをお勧めします.redisの下のVauleには、string(文字列)、hash(ハッシュ)、list(リスト)、set(セット)、sorted set(秩序セット)の5つのデータ型があります.
ここでRedisのシステム管理命令は以下の通りである.
PING   redis         PONG。
DBSIZE         key   。
INFO      redis             。
MONITOR        redis             。
SHUTDOWN            ,   redis  。
CONFIG GET parameter      redis      。(          )
CONFIG SET parameter value      redis      。(          )
CONFIG RESETSTAT    INFO        。(    :Keyspace    、Keyspace    、     ,     、  key  )
DEBUG OBJECT key      key      。
DEBUG SEGFAULT      redis     。
######       ,         ,     ##########
FLUSHDB            key。
FLUSHALL            key。

Redisの通常のKey操作命令は以下の通りである.
exits key     key     ,   1    ,0    
del key1 key2 ...... keyN      key,     key    ,0     key    
type key      key    。   none    key   ,string    ,list     set       ......
keys pattern             key
randomkey                 key,          ,    
rename oldkey newkey      key,  newkey  ,     ,   1     ,0  。   oldkey       newkey  。
renamenx oldkey newkey   ,     newkey      。
expire key seconds  key      ,    。  1  ,0  key              。
ttl key          key       。-1  key            。
select db-index          ,         0,       16 。  1    ,0  。
move key db-index  key              。  1    。0   key              。

Redisには5種類の異なるタイプのKeyがあるので、具体的な異なるタイプのKeyでは使用が異なりますが、以下では一つ一つ紹介します.
一、stringタイプ
stringは最も基本的なタイプであり、stringタイプはバイナリセキュリティです.redisのstringは任意のデータを含むことができるという意味です.例えばjpgピクチャやシーケンス化されたオブジェクト.内部実装からstringはbyte配列と見なすことができ,最大上限は1 Gバイトである.
stringタイプデータ操作指令:
set key value   key  string     ,  1    ,0  。
setnx key value    key   ,  key  string    。  key    ,  0。
get key    key    string ,   key     nil
getset key value    key  ,   key  。   key     nil。
mget key1 key2 ...... keyN       key  ,    key   ,     nil。
mset key1 value1 ...... keyN valueN       key  ,    1          ,    0           。
msetnx key1 value1 ...... keyN valueN       key  ,            key
incr key   key    ++  ,      。   incr     int   value      ,incr       key,   key   1。
decr key   key   --  ,decr     key,    key  -1。
incrby key integer   key       ,key          key,      value 0。
decrby key integer  key     。decrby        ,        incrby           ,    。

二、hashタイプ
hashはstringタイプのfieldとvalueのマッピングテーブルです.追加,削除ともにO(1)(平均)である.hashは特にオブジェクトを格納するのに適している.オブジェクトの各フィールドを単一stringタイプに保存することに対して.1つのオブジェクトをhashタイプに格納すると、より少ないメモリが消費され、オブジェクト全体へのアクセスが容易になります.メモリを節約する理由は、hashオブジェクトを新規作成するときからzipmap(small hashとも呼ばれる)で格納されるためです.このzipmapは実際にはhash tableではありませんが、zipmapは通常のhash実装よりもhash自体に必要なメタデータストレージのオーバーヘッドを節約することができます.zipmapの追加、削除、検索はすべてO(n)ですが、一般的なオブジェクトのfield数はあまり多くありません.だからzipmapを使うのも速いです.つまり、追加削除平均はO(1)です.fieldまたはvalueのサイズが一定の制限を超えた場合、redisはzipmapを内部で正常なhashに自動的に置き換えて実装します.この制限はプロファイルで指定できます.次のようになります.
hash-max-zipmap-entries 64 #      64  
hash-max-zipmap-value 512 #  value    512   

hashタイプデータ操作指令:
hset key field value    hash field    ,   key   ,   
hget key field       hash field。
hmget key filed1....fieldN         hash filed。
hmset key filed1 value1 ...... filedN valueN    hash   field。
hincrby key field integer      hash filed      。     hash filed      。
hexists key field      field    。
hdel key field       hash field。
hlen key      hash  field   。
hkeys key    hash     field。
hvals key    hash    value。
hgetall    hash    filed  value

三、listタイプ
Listはチェーンテーブル構造であり、各サブ要素がstringタイプの双方向チェーンテーブルであると理解できる.主な機能はpush,pop,1つの範囲のすべての値を取得するなどである.操作中keyはチェーンテーブルの名前として理解される.
Listタイプデータ操作指令:
lpush key string  key  list          ,  1    ,0  key     list   。
rpush key string   key   list          。
llen key   key  list   ,  key     0,  key      list    。
lrange key start end           ,   0  ,         ,-1         ,key        。
ltrim key start end   list       ,    1,key       。
lset key index value   list         ,    1,key           。
lrem key count value  List    (count  )   (count  )      (count)  value   ,         。count 0      。
lpop key  list            。  key  list         nil,  key      list    。
rpop key  list            。
blpop key1 ...... keyN timeout       ,        list  lpop     ,  blpop list1 list2 list3 0 ,  list   list2,list3       list2  lpop    list2       。     list        ,    timeout ,timeout 0       。    ,   client  key1...keyN     key  push   ,      key      client      。      ,   nil。   unix  select   poll。
brpop  blpop,                。

四、setタイプ
setは無秩序集合であり、最大(2の32次方程式-1)個の要素を含むことができる.setはhash tableで実現されるので,追加,削除,検索の複雑さはいずれもO(1)である.hash tableは、追加または削除に伴って自動的にサイズ変更されます.hash tableサイズを調整するときに同期(書き込みロックの取得)を必要とすると、他の読み書き操作がブロックされることに注意してください.やがてジャンプリスト(skip list)に変更されるかもしれません.ジャンプテーブルはすでにsorted setsで使用されています.setセットタイプについては、基本的な削除操作の追加に加えて、セットの並列セット(union)、交差(intersection)、差分セット(difference)も含まれます.
setタイプデータ操作指令:
sadd key member     string   key  set   ,    1,             0,key    set         。
srem key member  key  set       ,    1,  member         key      0,  key      set         。
spop key      key  set        ,  set     key     nil。
srandmember key  spop,   set      ,       。
smove srckey dstkey member  srckey  set   member    dstkey  set ,        。    1,  member  srckey       0,  key   set      。
scard key    set     ,  set     key      0。
sismember key member   member   set ,    1,0       key   。
sinter key1 key2 …… keyN       key   。
sinterstore dstkey key1 ....... keyN       key   ,       dstkey 。
sunion key1 key2 ...... keyN       key   。
sunionstore dstkey key1 ...... keyN       key   ,      dstkey 。
sdiff key1 key2 ...... keyN       key   。
sdiffstore dstkey key1 ...... keyN       key   ,      dstkey 。
smembers key   key  set      ,      。

五、sorted setタイプ
sorted setは秩序化された集合であり、setに基づいて順序属性を追加します.この属性は修正要素を追加するときに指定できます.指定するたびに、自動的に新しい値で順序を調整します.2列のmysqlテーブル、1列value、1列格納順序が理解できます.操作中keyはsorted setの名前として理解される.
Sorted Setタイプデータ操作命令:
add key score member        ,             score。
zrem key member       ,1    ,         0。
zincrby key incr member     member score ,         skip list    。      score 。
zrank key member              (  ),       score       。
zrevrank key member   ,          score      。
zrange key start end    lrange              。        
zrevrange key start end   ,      score   。
zrangebyscore key min max      score        。
zcount key min max      score        。
zcard key          。
zscore key element          score。
zremrangebyrank key min max                。
zremrangebyscore key min max      score        

そのためにRedisのKeyに関するコマンドを紹介しました.
転載先:https://blog.51cto.com/jim123/1978272