1

この方法で REPL redis-cli を使用して、redis で 3 つのハッシュを作成しました。

hmset redishop:items:Articulo1 artist "Martin Wessely" price 12.99 name "Handcrafted Trees Mug" 
hmset redishop:items:Articulo2 artist "Martin Wessely" price 13.99 name "Handcrafted Trees Mug"
hmset redishop:items:Articulo3 artist "Martin Wessely" price 14.99 name "Handcrafted Trees Mug"

構造がredisで正常に作成されていることを確認しましたが、これらはそこにあります:

hgetall redishop:items:Articulo3

次に、この方法でハッシュをセットに追加します。

sadd redishop:list-all redishop:items:Articulo3
sadd redishop:list-all redishop:items:Articulo2
sadd redishop:list-all redishop:items:Articulo1

ここで、SORT コマンドで遊んでいます。

SORT redishop:list-all BY redishop:items:*->price
SORT redishop:list-all BY redishop:items:*->price GET redishop:items:*->price
SORT redishop:list-all BY redishop:items:*->price GET # GET redishop:items:*->price

結果が得られません。セット内のハッシュの値が null で、理由がわかりません。

一方、ハッシュを作成して別の方法で設定すると、次のようになります。

multi
hmset redishop:items:Articulo1 artist "Martin Wessely" price 12.99 name "Handcrafted Trees Mug" 
sadd redishop:list-all Articulo1
hmset redishop:items3:Articulo2 artist "Martin Wessely" price 13.99 name "Handcrafted Trees Mug"
sadd redishop:list-all Articulo2
hmset redishop:items3:Articulo3 artist "Martin Wessely" price 14.99 name "Handcrafted Trees Mug"
sadd redishop:list-all Articulo3
exec

このようにして、コマンド SORT は完全に機能し、ハッシュがセットに挿入されますが、redis ドキュメントに基づいて理由がわかりません:

  1. コマンド multi only は、トランザクション ブロックの開始をマークします。後続のコマンドは、EXEC を使用してアトミックに実行するためにキューに入れられます。

  2. キー key:key:key を使用してハッシュを作成する場合、 : または 、または - を使用してもかまいません。また、redis で最も重要なのは、ドキュメントに従って構造のツリーを作成していないことです: https://redis.io/topics /data-types-intro

彼らは、: またはドットを含める方が良いか、良い方法だと言いますが、構造ツリーを作成しているとは言いません。そして、redishop:items:Articulo1 の代わりに Articulo1 をタイプする場合、セットにハッシュを追加すると、なぜ OK ですが、それ以外の場合は間違っているのか理解できませんか???? 実際、hgetall Articulo1 と入力すると null が返されますが、hgetall redishop:items:Articulo1 と入力すると、すべてのフィールドと値が取得されます。非常に奇妙です。

  1. exec はすべての文のみを実行します。これらの理由から、マルチを使用する場合とマルチを使用しない場合は同じにする必要があります。

この件に関するヘルプや説明は非常に役立ちます。前もって感謝します。

4

1 に答える 1