Jadual Kandungan
1. Saluran paip Redis
Gunakan satu perintah kenaikan untuk memproses 2 juta kekunci:
Rumah pangkalan data Redis Bagaimana untuk melaksanakan saluran paip dengan menyepadukan Redis dalam SpringBoot

Bagaimana untuk melaksanakan saluran paip dengan menyepadukan Redis dalam SpringBoot

May 30, 2023 am 09:19 AM
redis springboot

1. Saluran paip Redis

Untuk melaksanakan arahan Redis, klien Redis dan pelayan Redis perlu melakukan langkah berikut:

  • Pelanggan menghantar arahan kepada pelayan;

  • Pelayan menerima permintaan arahan, melaksanakan arahan dan menghasilkan hasil yang sepadan; klien;

  • Pelanggan menerima keputusan pelaksanaan arahan dan memaparkannya kepada pengguna.

  • Kebanyakan masa yang digunakan oleh arahan Redis dibelanjakan untuk menghantar permintaan arahan dan menerima keputusan arahan, membungkus sebarang bilangan permintaan arahan Redis bersama-sama, dan kemudian menghantar semuanya sekaligus Semua dihantar kepada pelayan, dan pelayan akan memproses semua permintaan arahan dan mengembalikan semua hasil pelaksanaannya kepada klien sekaligus.

  • Nota:

Pelayan Redis tidak mengehadkan bilangan arahan yang disertakan dalam saluran paip oleh pelanggan, tetapi ia menetapkan had volum lalai sebanyak 1GB untuk penimbal input pelanggan: apabila Bila jumlah data yang dihantar oleh pelanggan melebihi had ini, pelayan Redis akan menutup klien secara paksa. Oleh itu, adalah lebih baik untuk tidak melaksanakan sejumlah besar arahan atau beberapa arahan yang sangat besar dalam saluran paip yang sama sekaligus.

Selain itu, ramai pelanggan juga mempunyai had saiz penimbal tersirat Jika anda mendapati bahawa beberapa arahan saluran paip tidak dilaksanakan apabila menggunakan ciri saluran paip, atau hasil yang dikembalikan oleh saluran paip Jika ia tidak lengkap, kemungkinan besar. bahawa program anda telah mencapai had saiz penimbal terbina dalam klien.

2. Contoh saluran paip Redis bersepadu SpringBoot

Instance redis bersepadu SpringBoot

Gunakan satu perintah kenaikan untuk memproses 2 juta kekunci:

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>Memakan masa Sebagai ditunjukkan di bawah: Ia adalah 12 bit, unitnya ialah ns</p><p></p><p><br></p>Gunakan paip incrBy untuk memproses 2 juta kekunci, setiap kali membungkus 300 arahan dan menghantarnya ke pelayan, seperti yang ditunjukkan di bawah: <p></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>
Salin selepas log masuk
Bagaimana untuk melaksanakan saluran paip dengan menyepadukan Redis dalam SpringBoot Masa yang digunakan: 11 bit, unit: ns, 1/6 daripada masa yang diambil oleh satu arahan.


Atas ialah kandungan terperinci Bagaimana untuk melaksanakan saluran paip dengan menyepadukan Redis dalam SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penyelesaian kepada ralat 0x80242008 semasa memasang Windows 11 10.0.22000.100 Penyelesaian kepada ralat 0x80242008 semasa memasang Windows 11 10.0.22000.100 May 08, 2024 pm 03:50 PM

Penyelesaian kepada ralat 0x80242008 semasa memasang Windows 11 10.0.22000.100

Bagaimana untuk menukar kata laluan dalam redis Bagaimana untuk menukar kata laluan dalam redis Apr 20, 2024 am 03:00 AM

Bagaimana untuk menukar kata laluan dalam redis

Menganalisis kesesakan fungsi PHP dan meningkatkan kecekapan pelaksanaan Menganalisis kesesakan fungsi PHP dan meningkatkan kecekapan pelaksanaan Apr 23, 2024 pm 03:42 PM

Menganalisis kesesakan fungsi PHP dan meningkatkan kecekapan pelaksanaan

Adakah redis cache memori? Adakah redis cache memori? Apr 20, 2024 am 05:26 AM

Adakah redis cache memori?

Strategi dan pengoptimuman caching API Golang Strategi dan pengoptimuman caching API Golang May 07, 2024 pm 02:12 PM

Strategi dan pengoptimuman caching API Golang

Adakah redis pangkalan data bukan hubungan? Adakah redis pangkalan data bukan hubungan? Apr 20, 2024 am 05:36 AM

Adakah redis pangkalan data bukan hubungan?

Mekanisme caching dan amalan aplikasi dalam pembangunan PHP Mekanisme caching dan amalan aplikasi dalam pembangunan PHP May 09, 2024 pm 01:30 PM

Mekanisme caching dan amalan aplikasi dalam pembangunan PHP

Yang manakah mempunyai prestasi yang lebih baik, erlang atau golang? Yang manakah mempunyai prestasi yang lebih baik, erlang atau golang? Apr 21, 2024 am 03:24 AM

Yang manakah mempunyai prestasi yang lebih baik, erlang atau golang?

See all articles