sql >> データベース >  >> NoSQL >> Redis

誰かがredissetbitコマンドを説明できますか?

    その名前が示すように、SETBIT ビット演算を実行できます。つまり、特定のキーに対して、特定のビットオフセットで特定のビットを0または1に設定します。

    理解しておくべき重要なことは、結果には必ずしも印刷可能な文字だけが含まれるとは限らないということです。これが、Redisがカスタム関数sdscatreprを使用する理由です。 CLI出力をフォーマットするには:

    sds文字列"s"にエスケープされた文字列表現を追加します。ここで、印刷できないすべての文字(isprint()でテスト)が "\ n \ r \a...."または"\x"の形式でエスケープに変換されます。 。

    そうは言っても、簡単な例から始めましょう。 16進数の0x7Fを検討する場合 (=127)8ビットでのバイナリ表現は次のとおりです。

    pos: 0 1 2 3 4 5 6 7
    bit: 0 1 1 1 1 1 1 1
         ^             ^
         |             |
         MSB           LSB
    

    通常、SETBITを使用できます この値を保存するには、オフセット0に注意してください。 MSBです オフセット7はLSBです :

    redis> SETBIT myval 0 0
    (integer) 0
    redis> SETBIT myval 1 1
    (integer) 0
    redis> SETBIT myval 2 1
    (integer) 0
    redis> SETBIT myval 3 1
    (integer) 0
    redis> SETBIT myval 4 1
    (integer) 0
    redis> SETBIT myval 5 1
    (integer) 0
    redis> SETBIT myval 6 1
    (integer) 0
    redis> SETBIT myval 7 1
    (integer) 0
    

    次の場合に検査する価値を取得します:

    redis> GET myval
    "\x7f"
    

    では、マルチバイトはどうなりますか? 0x52を保存するとします (=82)これは文字Rに対応します ASCIIで。 8ビット表現は01010010です。 ビット位置(8, 9, ..., 15) 最初の値の直後に保存する必要があるため:

    redis> SETBIT myval 8 0
    (integer) 0
    redis> SETBIT myval 9 1
    (integer) 0
    redis> SETBIT myval 10 0
    (integer) 0
    redis> SETBIT myval 11 1
    (integer) 0
    redis> SETBIT myval 12 0
    (integer) 0
    redis> SETBIT myval 13 0
    (integer) 0
    redis> SETBIT myval 14 1
    (integer) 0
    redis> SETBIT myval 15 0
    (integer) 0
    

    そして、あなたは得る:

    redis> GET myval
    "\x7fR"
    

    ここで、RedisCLIは印刷可能な文字Rを表すことができます 。

    文字列値1と7を「mykey」に格納すると

    01000001に対応します これは65と0x41に等しい 16進数で。 ASCII文字Aに対応します 。そうすること:

    redis> SETBIT mykey 1 1
    (integer) 0
    redis> SETBIT mykey 7 1
    (integer) 0
    

    与える:

    redis> GET mykey
    "A"
    

    getbitはredis内でどのように機能しますか?

    指定された位置にあるビットの値を返すだけです。ここ:

    redis> GETBIT mykey 1
    (integer) 1
    

    ただし、ビット0は設定されていません(デフォルトでは0です)。したがって、次のようになります。

    redis> GETBIT mykey 0
    (integer) 0
    


    1. MongoDB配列を$typeと一致させますか?

    2. Redisとのセッションを保存するのはどのくらい安全ですか?

    3. サーバー127.0.0.1shell/mongo.jsに接続できませんでした

    4. Mongodbは重複エントリを回避します