redis--Stringタイプ

9541 ワード

title:redisデータ型-string
date: 2018-4-12 11:11:24
tags: [redis]
categories:redisノート
keywords:redisデータ型-string
一、概説:
文字列タイプは、Redisで最も基本的なデータ記憶タイプであり、Redisではバイナリセキュリティである.これは、JPEG画像データやJsonオブジェクト記述情報など、任意のフォーマットのデータを受け入れることができることを意味する.Redisにおける文字列タイプのValueが最大で格納できるデータ長は512 Mである.
二、関連命令(Oは時間複雑度を表す)
1、APPEND key value O(1)
このキーが既に存在する場合、APPENDコマンドは、既に存在するValueの末尾にパラメータValueのデータを追加します.キーが存在しない場合、APPENDコマンドは新しいキー/Valueを作成します.追加後のValueの長さ.
2、DECR key O(1)
キーのValue原子性の減算1を指定します.キーが存在しない場合、その初期値は0であり、decrの後には-1である.Valueの値がHelloなどの整数値に変換できない場合、この操作は失敗し、対応するエラー情報を返します.注意:この操作の値範囲は64ビットの符号付き整数です.減算されたValue値.
3、INCR key O(1)
指定したKeyのValue原子性を1ずつ増やします.キーが存在しない場合、その初期値は0であり、incr以降の値は1である.Valueの値がHelloなどの整数値に変換できない場合、この操作は失敗し、対応するエラー情報を返します.注意:この操作の値範囲は64ビットの符号付き整数です.増加したValue値.
4、DECRBY key decrement O(1)
キーのValue原子性の減少decrementが指定されます.キーが存在しない場合、その初期値は0であり、decrby以降の値は-decrementである.Valueの値がHelloなどの整数値に変換できない場合、この操作は失敗し、対応するエラー情報を返します.注意:この操作の値範囲は64ビットの符号付き整数です.減少したValue値.
5、INCRBY key increment O(1)
キーのValue原子性の増加を指定します.キーが存在しない場合、その初期値は0であり、incrby以降の値はincrementである.Valueの値がHelloなどの整数値に変換できない場合、この操作は失敗し、対応するエラー情報を返します.注意:この操作の値範囲は64ビットの符号付き整数です.増加したValue値.
6、GET key O(1)
指定したKeyのValueを取得します.キーに関連付けられたValueがstringタイプでない場合、Redisは、GETコマンドがstring Valueを取得するためにのみ使用できるため、エラーメッセージを返します.キーに関連するValueは、キーが存在しない場合はnilを返します.
SET key value O(1)
キーが指定した文字列Valueを持つように設定し、キーが既に存在する場合は元の値を上書きします.いつも「OK」を返します.
7、GETSET key value O(1)
原子性の設定キーは指定したValueであり、キーの元の値を返します.GETコマンドと同様に、このコマンドはstring Valueしか処理できません.そうしないと、Redisは関連するエラー情報を与えます.キーの元の値を返し、キーが存在しない場合はnilを返します.
STRLEN key O(1)
指定したキーの文字値の長さを返します.Valueがstringタイプでない場合、Redisは実行に失敗し、関連するエラー情報を与えます.指定したキーのValue文字の長さを返し、キーが存在しない場合は0を返します.
8、SETEX key seconds value O(1)
原子的に2つの操作を完了します.1つは、キーの値を指定した文字列に設定し、Redisサーバでのキーの生存時間(秒数)を設定することです.このコマンドは主にRedisがCacheサーバとして使用される場合に適用される.
9、SETNX key value O(1)
指定したキーが存在しない場合は、そのキーが指定した文字列Valueを持つように設定します.この場合、その効果はSETコマンドと等価です.逆に、キーが既に存在する場合、コマンドは何もせずに返されます.1は設定が成功したことを示し、そうでない場合は0です.
10、SETRANGE key offset value O(1)
指定したKeyの文字列値の一部を置換します.offsetからは、コマンドの3番目のパラメータvalueの文字列長に置き換えられます.offsetの値がキーの元の値Valueの文字列長より大きい場合、RedisはValueの後ろに数の0 x 00を揃え、その後、新しい値を追加します.このキーが存在しない場合、コマンドは元の値の長さを0と仮定し、offset個0 x 00を追加してから新しい値を追加します.文字列Valueの最大長は512 Mであるため、offsetの最大値は536870911である.最後に、コマンドが実行されると、指定したKeyの元の値の長さが増加するため、Redisは置換されたすべての文字列を格納するために十分なメモリを再割り当てするため、一定のパフォーマンス損失をもたらすことに注意してください.変更された文字列Valueの長さ.
11、GETRANGE key start end O(1)
切り取られた文字列の長さが短い場合、コマンドの時間的複雑さはO(1)と見なすことができ、そうでなければO(N)であり、ここでNは切り取られたサブ文字列の長さを表す.このコマンドは、サブ文字列を切り取る場合、start(0は最初の文字を表す)とendが存在する文字を閉区間で同時に含み、end値がValueの文字長を超えると、startからすべての文字データを切り取るだけです.サブストリング
12、SETBIT key offset value O(1)
指定されたOffset上のBITの値を設定します.この値は1または0のみで、設定後、このコマンドはOffset上の既存のBIT値を返します.指定キーが存在しない場合、コマンドは新しい値を作成し、指定したOffsetでパラメータのBIT値を設定します.OffsetがValueの文字長より大きい場合、RedisはValue値を延長し、指定したOffsetにパラメータのBIT値を設定します.中間に追加されたBIT値は0です.最後に、Offset値は0より大きくなければなりません.指定されたOffset上のBITの元の値.
13、GETBIT key offset O(1)
指定したOffset上のBITの値、0または1を返します.Offsetがstring valueの長さを超えると、コマンドは0を返します.したがって、空の文字列では常に0を返します.指定したOffsetのBIT値.
14、MGET key [key …] O(N)
Nは、取得Keyの数を示す.指定したKeysのすべてのValuesを返します.キーが存在しない場合、またはその値がstringタイプでない場合、キーのValueはnilを返します.指定したKeysのValuesのリストを返します.
15、MSET key value [key value …] O(N)
Nは、指定されたKeyの数を表す.このコマンド原子性の完了パラメータのkey/valueの設定操作はすべて、SETコマンドを複数回反復して実行することと見なすことができる.このコマンドは失敗せず、常にOKに戻ります.
16、MSETNX key value [key value …] O(N)
Nは、指定されたKeyの数を表す.このコマンド原子性の完了パラメータにおけるすべてのkey/valueの設定操作は、SETNXコマンドを複数回反復して実行することと見なすことができる.しかし、ここで明確に説明する必要があるのは、このグループのKeysのいずれかのKeyがすでに存在している場合、この操作はすべてロールバックされ、つまりすべての変更は有効ではありません.1はすべてのKeysが正常に設定されていることを示し、0はキーが変更されていないことを示します.
三、コマンドの例:
1. SET/GET/APPEND/STRLEN:
    /> redis-cli   #  Redis     。
    redis 127.0.0.1:6379> exists mykey                   #        ,    1,    0。
    (integer) 0
    redis 127.0.0.1:6379> append mykey "hello"      #      ,  append      Value   。
    (integer) 5
    redis 127.0.0.1:6379> append mykey " world"    #      ,       Value   。
    (integer) 11
    redis 127.0.0.1:6379> get mykey                      #  get      ,   append   。
    "hello world"
    redis 127.0.0.1:6379> set mykey "this is a test" #  set        ,      。
    OK
    redis 127.0.0.1:6379> get mykey
    "this is a test"
    redis 127.0.0.1:6379> strlen mykey                  #    Key     ,   C  strlen  。
    (integer) 14

2. INCR/DECR/INCRBY/DECRBY:
    redis 127.0.0.1:6379> set mykey 20     #  Key   20
    OK
    redis 127.0.0.1:6379> incr mykey         # Key    1
    (integer) 21
    redis 127.0.0.1:6379> decr mykey        # Key    1
    (integer) 20
    redis 127.0.0.1:6379> del mykey          #     。
    (integer) 1
    redis 127.0.0.1:6379> decr mykey        #         ,       0,      -1
    (integer) -1
    redis 127.0.0.1:6379> del mykey   
    (integer) 1
    redis 127.0.0.1:6379> incr mykey        #         ,       0,      1
    (integer) 1
    redis 127.0.0.1:6379> set mykey hello #    Value                。
    OK
    redis 127.0.0.1:6379> incr mykey        #             ,Redis       。
    (error) ERR value is not an integer or out of range
    redis 127.0.0.1:6379> set mykey 10
    OK
    redis 127.0.0.1:6379> decrby mykey 5 
    (integer) 5
    redis 127.0.0.1:6379> incrby mykey 10
    (integer) 15

3. GETSET:
    redis 127.0.0.1:6379> incr mycounter      #            1
    (integer) 1
    #            ,        ,             。
    redis 127.0.0.1:6379> getset mycounter 0  
    "1"
    redis 127.0.0.1:6379> get mycounter       #        。
    "0"

4. SETEX:
    redis 127.0.0.1:6379> setex mykey 10 "hello"   #    Key      10 。
    OK    
    #  ttl        Key       (  ),0      ,-1      。
    redis 127.0.0.1:6379> ttl mykey                       
    (integer) 4
    redis 127.0.0.1:6379> get mykey                      #                   Value。
    "hello"
    redis 127.0.0.1:6379> ttl mykey                        # ttl        , Key    。
    (integer) 0
    redis 127.0.0.1:6379> get mykey                      #      Key   nil。
    (nil)

5. SETNX:
    redis 127.0.0.1:6379> del mykey                      #    ,          。
    (integer) 1
    redis 127.0.0.1:6379> setnx mykey "hello"        #      ,         。
    (integer) 1
    redis 127.0.0.1:6379> setnx mykey "world"       #      ,              。
    (integer) 0
    redis 127.0.0.1:6379> get mykey                      #       ,             。
    "hello"

6. SETRANGE/GETRANGE:
    redis 127.0.0.1:6379> set mykey "hello world"       #     。
    OK
    redis 127.0.0.1:6379> setrange mykey 6 dd          #          2   (dd  2   )
    (integer) 11
    redis 127.0.0.1:6379> get mykey                         #       。
    "hello ddrld"
    redis 127.0.0.1:6379> setrange mykey 20 dd        #offset     Key       ,         0。
    (integer) 22
    redis 127.0.0.1:6379> get mykey                           #   0      。
    "hello ddrld\x00\x00\x00\x00\x00\x00\x00\x00\x00dd"
    redis 127.0.0.1:6379> del mykey                         #   Key。
    (integer) 1
    redis 127.0.0.1:6379> setrange mykey 2 dd         #    。
    (integer) 4
    redis 127.0.0.1:6379> get mykey                        #          。
    "\x00\x00dd"   
    redis 127.0.0.1:6379> set mykey "0123456789"   #    。
    OK
    redis 127.0.0.1:6379> getrange mykey 1 2      #     Value,        ,        。
    "12"
    redis 127.0.0.1:6379> getrange mykey 1 20   #20    Value    ,                 。
    "123456789"

7. SETBIT/GETBIT:
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    redis 127.0.0.1:6379> setbit mykey 7 1       #   0        BIT  1,    BIT 0
    (integer) 0
    redis 127.0.0.1:6379> get mykey                #       ,    0000 0001       0x01
    "\x01"
    redis 127.0.0.1:6379> setbit mykey 6 1       #   0        BIT  1,    BIT 0
    (integer) 0
    redis 127.0.0.1:6379> get mykey                #       ,    0000 0011       0x03
    "\x03"
    redis 127.0.0.1:6379> getbit mykey 6          #     Offset BIT 。
    (integer) 1
    redis 127.0.0.1:6379> getbit mykey 10        #Offset     value   ,    0。
    (integer) 0

8. MSET/MGET/MSETNX:
    redis 127.0.0.1:6379> mset key1 "hello" key2 "world"   #     key1 key2   。
    OK
    redis 127.0.0.1:6379> mget key1 key2                        #     key1 key2     。
    1) "hello"
    2) "world"
    #     key3 key4   ,          ,            1。
    redis 127.0.0.1:6379> msetnx key3 "stephen" key4 "liu" 
    (integer) 1
    redis 127.0.0.1:6379> mget key3 key4                   
    1) "stephen"
    2) "liu"
    #     key3 key5   ,  key3    ,            0。
    redis 127.0.0.1:6379> msetnx key3 "hello" key5 "world" 
    (integer) 0
    #    key3 key5,  key5      ,    nil。
    redis 127.0.0.1:6379> mget key3 key5                   
    1) "stephen"
    2) (nil)