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

SQLのようなRedisデータベーステーブルを設計しますか?

    Redisは、他のNoSQLデータストアと同様に、実行する内容に基づいてさまざまな要件があります。

    Redisには、必要に応じて役立つ可能性のあるいくつかのデータ構造があります。たとえば、select * from student where name = 'xxx'が必要な場合 Redisのhashを使用できます 。

    redis 127.0.0.1:6379> hmset student:xxx id 1 college nnn address xn
    OK
    redis 127.0.0.1:6379> hgetall student:xxx
    1) "id"
    2) "1"
    3) "college"
    4) "nnn"
    5) "address"
    6) "xn"
    

    同じことをしたいがwhere college = 'nnn'を選択するなど、他のクエリがある場合 次に、データを非正規化する必要があります。非正規化は通常SQLでは悪いことですが、NoSQLでは非常に一般的です。

    主なクエリが名前に対して行われるが、大学に対してクエリが必要になる場合は、setを追加するなどの操作を行うことができます。 ハッシュに加えて。

    redis 127.0.0.1:6379> sadd college:nnn student:xxx
    (integer) 1
    redis 127.0.0.1:6379> smembers college:nnn
    1) "student:xxx"
    

    このように構造化されたデータを使用して、大学xnに行く名前のすべての情報を検索する場合は、最初にsetを選択します。 、次に各hashを選択します setで返された名前に基づく 。

    要件は通常、使用する設計と構造を左右します。



    1. 文字列値から空白(先頭と末尾)を削除する

    2. mongodbのフィールドの値のみを返す方法

    3. MongoDBのプロパティに基づいてネストされた配列オブジェクトを更新します

    4. Redis/Jedisは単一障害点および自動フェイルオーバーではありません