3. ハッシュの種類
概要
ハッシュは小規模な Redis データベースに似ています
ハッシュには複数のキーと値のペアを含めることができます
ハッシュの各キーは繰り返すことができず、順序付けされていないものでも構いません
。文字列または数値です
数値の場合、インクリメントまたはデクリメント操作を実行できます
ハッシュ構造
以下の構造では、ユーザーはキー名を表し、複数の異なるキーと値のペアを含めることができます
[ "user":[ "name1":"yanying1", "name2":"yanying2", "name3":"yanying3" ] ]
ハウツー
デモ (コマンドライン + PHP デモ)
コマンドライン:
まず、キーと値のペアをハッシュに追加します。成功した場合は 1 を返し、キーが既に存在する場合は 0 を返します
hset hash-key sub-key1 value1 // 返回 1
存在しないキーと値のペアを追加します
hset hash-key sub-key2 value2 // 返回 1
この時点で、キー sub-key1 と sub-key2 は既にハッシュに存在します。次に、「同一のキー sub-key1 をハッシュに追加」を追加して、何が起こるかを確認します。
hset hash-key sub-key1 value1 // 返回 0,由于该键已经存在
以下では、hget を通じて指定されたキー sub-key1 の値を取得します。
hget hash-key sub-key1 // "value1"
値の取得に成功しました。追加されたすべての要素を取得して、どの値が追加されたのかを確認してみましょう
hgetall hash-key
結果は次のとおりです。最初の結果は最初のキーと値のペアのキー、2 番目の結果はキーと値のペアの値というように、2 つごとが 1 つのグループであることがわかりました。
"sub-key1""value1""sub-key2""value2"
キーを削除してみます。キーが以前にハッシュに存在していた場合は 1 が返されることがわかります。それ以外の場合は 0 が返されます。
hdel hash-key sub-key1 // 该键之前存在于散列,返回1
もう一度 sub-key1 を削除してみます。 , 存在しないキーを削除すると、返される結果は 0 であることがわかります
hdel hash-key sub-key1
何が残っているかを確認するために、すべてのキーと値のペアを再度取得します。
hgetall hash-key
結果は、キーと値のペアが削除されたばかりです
"sub-key1""value1"
PHP バージョンのデモ
最初のステップは、Redis データベースをリンクすることです
$redis = new Redis();$redis->connect('127.0.0.1', 6379);
最初にキーを挿入します。 -値のペアをハッシュキーハッシュに変換します。 1 は挿入が成功したことを意味し、0 の要素はすでに存在していることを意味します
$redis->hset('hash-key','sub-key1','value1'); // int 1,元素插入成功,之前不存在该键
同じキーと値のペアを再度挿入します
$redis->hset('hash-key','sub-key1','value1'); // int 0,元素插入失败,该键已经存在
次のデモでは、引き続き他の値を挿入します
$redis->hset('hash-key','sub-key2','value2'); // int 0
今度は hget を使用してキーに対応する値。 sub-key2 の値を取得してみます。
$redis->hget('hash-key','sub-key2'); // 'value2'
取得後、hgetall を使用して、挿入したばかりのすべての値を取得して、どのキーと値のペアが含まれているかを確認します
$redis->hgetall('hash-key');
結果は、完全なキー値を含む配列になります
array (size=2) 'sub-key1' => string 'value1' (length=6) 'sub-key2' => string 'value2' (length=6)
すべてのキーの値を表示したら、キーの 1 つを削除してみましょう。キーが以前にハッシュに存在していた場合は 1 を返します。それ以外の場合は 0 を返します
$redis->hdel('hash-key','sub-key1'); // 该键之前存在,返回int 1
sub-key1 キーを再度削除しようとすると、0 が返されることがわかります。これは、キーがセットに存在せず、削除に失敗しました
$redis->hdel('hash-key','sub-key1'); // 该键不存在,返回int 0
次に、hgetall を使用してハッシュ
$redis->hgetall('hash-key');
に残っているすべてのキーと値のペアを確認し、1 つのキーと値のペアを含む配列のみが返されることを確認します。
えーその理由は、sub-key1 が削除されたばかりだからです