Redis でアトミック性を確保する方法

リリース: 2019-07-08 09:16:01
オリジナル
7031 人が閲覧しました

Redis でアトミック性を確保する方法

原子性:

原子性はデータベース トランザクションの特性です。データベース トランザクションのコンテキストでは、アトミック性とは、トランザクション (トランザクション) 内のすべての操作が完全に完了しているか、完了していないかのいずれかであり、中間段階で終了しないことを指します。

Redis の場合、コマンドのアトミック性は、操作を細分化することができず、操作が実行されるか実行されないかを意味します。

Redis 操作がアトミックである理由:

Redis 操作がアトミックである理由は、Redis がシングルスレッドであるためです。

同時実行時の Redis のパフォーマンス:

Redis の API はアトミックな操作なので、複数のコマンドも同時実行でアトミックですか?

には次のコードがあります:

$redis= newRedis();
$redis->connect('127.0.0.1',6379);
for($i= 0;$iget('val');
$num++;
$redis->set('val',$num);
usleep(10000);
}
ログイン後にコピー

2 つのターミナルを使用して上記のプログラムを実行すると、val の結果が 2000 未満であることがわかります。これにより、プログラム内で複数の Redis コマンドを実行することがわかります。アトミックではありませんが、これは通常のデータベースのパフォーマンスと同じです。

上記のプログラムでアトミック性を実現したい場合は、get と set を incr などの単一コマンド操作に変更するか、Redis トランザクションを使用するか、Redis Lua を使用して実装することができます。

Redis の場合、get、set、eval などの API の実行は 1 つずつタスクになります。これらのタスクは Redis スレッドによって実行されます。タスクの実行は成功または失敗します。これが Redis の理由です。コマンドはアトミックです。

Redis 自体が提供するすべての API はアトミックな操作です。Redis のトランザクションは実際にバッチ操作のアトミック性を保証します。

Redis 関連の知識の詳細については、 Redis の使用方法のチュートリアルをご覧ください# ## カラム!

以上がRedis でアトミック性を確保する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート