目次
1. Redis パイプライン
2. SpringBoot 統合 Redis パイプラインの例
ホームページ データベース Redis SpringBoot に Redis を統合してパイプラインを実装する方法

SpringBoot に Redis を統合してパイプラインを実装する方法

May 30, 2023 am 09:19 AM
redis springboot

1. Redis パイプライン

Redis コマンドを実行するには、Redis クライアントと Redis サーバーは次の手順を実行する必要があります:

  • クライアントはコマンドを To に送信します。サーバー;

  • サーバーはコマンド要求を受け入れ、コマンドを実行し、対応する結果を生成します。

  • サーバーは結果を次のサーバーに返します。クライアント;

  • クライアントはコマンドの実行結果を受け取り、それをユーザーに表示します。

Redis コマンドで消費される時間のほとんどは、コマンド リクエストの送信とコマンド結果の受信、任意の数の Redis コマンド リクエストをまとめてパッケージ化して、それらをすべて一度に送信することに費やされます。サーバーに送信されると、サーバーはすべてのコマンド要求を処理し、すべての実行結果を一度にクライアントに返します。

注:

Redis サーバーは、クライアントによってパイプラインに含まれるコマンドの数を制限しませんが、クライアントの入力バッファーのデフォルトのボリューム制限を 1 GB に設定します。クライアントによって送信されるデータの量がこの制限を超えると、Redis サーバーはクライアントを強制的に閉じます。したがって、同じパイプラインで多数のコマンドや非常に大規模なコマンドを一度に実行しないことが最善です。

さらに、多くのクライアントには暗黙的なバッファ サイズ制限もあります。パイプライン機能の使用時に一部のパイプライン コマンドが実行されない場合、またはパイプラインによって返された結果が不完全である場合は、おそらく、プログラムがクライアントの組み込みバッファ サイズ制限に達したことを示します。

2. SpringBoot 統合 Redis パイプラインの例

SpringBoot 統合 Redis の例

単一のインクリメント コマンドを使用して 200 万のキーを処理します:

public class RedisPipelineStudy extends BaseTest {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    private static final String PREFIX = "test0:";

    @Test
    public void test() {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start("test0");
        for (int times = 0; times <p>時間がかかります以下に示すように: これは 12 ビット、単位は ns<br></p><p><img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/887/227/168540959894676.png" class="lazy" alt="SpringBoot に Redis を統合してパイプラインを実装する方法"></p><p> パイプ incrBy を使用して 200 万個のキーを処理し、毎回 300 個のコマンドをパッケージ化して、それらを</p><pre class="brush:php;toolbar:false">public class RedisPipelineStudy extends BaseTest {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    private static final String PREFIX = "test1:";

    @Test
    public void test() {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start("test1");
        List<integer> recordList = new ArrayList();
        for (int times = 0; times  300) {
                        incrByPipeline(recordList);
                        recordList = new ArrayList();
                    }
                } catch (Exception e) {
                    System.out.println(e);
                }
            }
            if (!CollectionUtils.isEmpty(recordList)) {
                incrByPipeline(recordList);
                recordList = new ArrayList();
            }
        }
        stopWatch.stop();
        System.out.println(stopWatch.prettyPrint());
    }

    private void incrByPipeline(List<integer> recordList) {
        stringRedisTemplate.executePipelined(new RedisCallback<object>() {
            @Override
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                try {
                    for (Integer record : recordList) {
                        byte[] key = (PREFIX + record).getBytes();
                        connection.incrBy(key, 1);
                    }
                } catch (Exception e) {
                    System.out.println(e);
                }
                return null;
            }
        });
    }
}</object></integer></integer>
ログイン後にコピー

消費時間: 11 ビット、単位: ns、単一コマンドにかかる時間の 1/6。

SpringBoot に Redis を統合してパイプラインを実装する方法

以上がSpringBoot に Redis を統合してパイプラインを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策 Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策 May 08, 2024 pm 03:50 PM

Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策

Redisでパスワードを変更する方法 Redisでパスワードを変更する方法 Apr 20, 2024 am 03:00 AM

Redisでパスワードを変更する方法

PHP機能のボトルネックを分析し、実行効率を向上 PHP機能のボトルネックを分析し、実行効率を向上 Apr 23, 2024 pm 03:42 PM

PHP機能のボトルネックを分析し、実行効率を向上

Redisはメモリキャッシュですか? Redisはメモリキャッシュですか? Apr 20, 2024 am 05:26 AM

Redisはメモリキャッシュですか?

Golang API のキャッシュ戦略と最適化 Golang API のキャッシュ戦略と最適化 May 07, 2024 pm 02:12 PM

Golang API のキャッシュ戦略と最適化

redis は非リレーショナル データベースですか? redis は非リレーショナル データベースですか? Apr 20, 2024 am 05:36 AM

redis は非リレーショナル データベースですか?

PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践 PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践 May 09, 2024 pm 01:30 PM

PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践

erlang と golang ではどちらのパフォーマンスが優れていますか? erlang と golang ではどちらのパフォーマンスが優れていますか? Apr 21, 2024 am 03:24 AM

erlang と golang ではどちらのパフォーマンスが優れていますか?

See all articles