Redis は単一プロセスでブロック型であるため、同時に処理できるリクエストは 1 つだけであり、後続のリクエストはキューに入れて待つ必要があります。
利点: 単一プロセスであるため、同時実行の問題に対処する必要がなく、システムの複雑さが軽減されます
欠点: 大きなサイズのオブジェクト (100kb を超える) のキャッシュには適していません
理由: Redis は 1 つのコアのみを使用しますが、Memcached は複数のコアを使用できるため、各コアに少量のデータを保存する場合、平均して Redis の方が Memcached よりも高いパフォーマンスを発揮します。
100k を超えるデータでは、Memcached のパフォーマンスが Redis よりも高くなります。Redis もビッグ データの保存パフォーマンスを最適化していますが、それでも Memcached よりわずかに劣ります。
memcache はマルチプロセスでノンブロッキングです。キャッシュとしてのみ使用する場合は、memcache の方が適しています。
exists キー key が redis にすでに存在するかどうかを確認します。たとえば、exists mycounter
set set mycounter 99
get などのキー値を初期化します。get getmycounter などのキー値を取得します。
incr は 1 ずつ増加します。例: incrmycounter //出力結果は 100
incrby は増加値を指定します。例: incrbymycounter 2 //出力結果は 102
減少値を指定します。例: incrbymycounter -2 //出力結果は 100 です。
setnx 値が存在しない場合、値は正常に設定されます。例: setnxmycounter 99 //出力結果は 0、これは、設定が失敗し、redis に既に存在することを意味します。
setnx key1 12 //出力結果は 1 で、設定が成功し、これまで redis に存在しなかったことを示します。
expire Setキーのライフサイクル (expired など) mycounter 30 //有効期間を 30 秒に設定します
ttl キーの有効期限を取得します (ttlmycounter など) //出力 13 です。これは、残り 13 秒であることを意味します-1 が返された場合は、メモリが不足しない限り、有効期限が切れず、常に Redis キャッシュに存在することを意味します。
//-2 が返された場合、有効期限が切れており、redis がそのようなものはありません キー値は存在すると検証でき、存在しないことを意味する 0 が返されます。
製品の購入ラッシュのため、数量を増やすことができません。管理が難しくなり、在庫が限度を超えてしまい、コストが不足してしまうのです。 (例: 在庫は 1,000 ですが、ユーザーは 2,000 個のアイテムを購入できましたが、在庫が不足しています。)
宝くじの制限には限りがあり、管理できず、お金を使いすぎました
赤い封筒を手に取る
計画 1 のフローチャート:
計画 2 のフローチャート:
らぁぁぁぁぁぁぁ以上がRedis は在庫の同時実行の問題をどのように解決し、数量管理を実現しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。