Rumah > Artikel > pangkalan data > Bagaimana untuk melaksanakan saluran paip dengan menyepadukan Redis dalam SpringBoot
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.
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
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>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!