Rumah > pangkalan data > Redis > teks badan

Penjelasan terperinci pelaksanaan baris gilir keutamaan dalam Redis

WBOY
Lepaskan: 2023-06-20 08:31:19
asal
2507 orang telah melayarinya

Penjelasan terperinci pelaksanaan Redis bagi barisan keutamaan

Baris gilir keutamaan ialah struktur data biasa yang boleh mengisih elemen mengikut peraturan tertentu dan mengekalkan susunan ini semasa operasi baris gilir, supaya unsur-unsur dibawa keluar daripada Elemen baris gilir sentiasa diproses mengikut keutamaan yang telah ditetapkan.

Sebagai pangkalan data dalam memori, Redis juga mempunyai kelebihan dalam melaksanakan baris gilir keutamaan kerana keupayaan capaian datanya yang pantas dan cekap. Artikel ini akan memperkenalkan secara terperinci kaedah dan aplikasi Redis untuk melaksanakan baris gilir keutamaan.

1. Prinsip asas pelaksanaan Redis

Prinsip asas pelaksanaan Redis barisan keutamaan adalah untuk mengekalkan senarai tersusun atau set tertib Setiap kali elemen dimasukkan, ia dimasukkan mengikut tertib mengikut keutamaan yang ditentukan ; Padamkan elemen pertama secara langsung setiap kali elemen muncul.

Yang berikut menggunakan set tertib sebagai contoh untuk tunjuk cara. Kaedah pelaksanaan yang sama juga boleh digunakan pada senarai tertib. Kod dan operasi berikut dilakukan dalam redis-cli.

1 Buat set tertib
Gunakan arahan ZADD untuk mencipta set tertib bernama priority_queue.

127.0.0.1:6379> ZADD priority_queue 5 "A"
(integer) 1
127.0.0.1:6379> ZADD priority_queue 3 "B"
(integer) 1
127.0.0.1:6379> ZADD priority_queue 4 "C"
(integer) 1
127.0.0.1:6379> ZADD priority_queue 2 "D"
(integer) 1
127.0.0.1:6379> ZADD priority_queue 1 "E"
(integer) 1
Salin selepas log masuk

Pada masa ini, sudah ada lima elemen dalam priority_queue Nilai dan markahnya ialah: E (1), D (2), B (3), C (4), A (5. ).

2. Lihat set tersusun
Gunakan arahan ZRANGE untuk melihat senarai elemen dalam priority_queue.

127.0.0.1:6379> ZRANGE priority_queue 0 -1 WITHSCORES
1) "E"
2) "1"
3) "D"
4) "2"
5) "B"
6) "3"
7) "C"
8) "4"
9) "A"
10) "5"
Salin selepas log masuk

Hasilnya menunjukkan senarai elemen priority_queue, dengan nilai dan skor setiap elemen. Di mana elemen E mempunyai skor 1, D mempunyai skor 2, dan seterusnya.

3. Mampatkan set yang dipesan
Gunakan arahan ZPOPMIN untuk meletuskan elemen pertama dalam priority_queue dan padamkannya daripada set yang dipesan.

127.0.0.1:6379> ZPOPMIN priority_queue
1) "E"
2) "1"
Salin selepas log masuk

Elemen E dan skor 1nya telah muncul Dalam langkah seterusnya, E tidak akan muncul lagi dalam baris gilir_keutamaan.

Prinsip asas Redis melaksanakan baris gilir keutamaan ditunjukkan dalam operasi di atas Di bawah adalah beberapa operasi praktikal selanjutnya di peringkat aplikasi.

2. Contoh aplikasi

1 Gunakan baris gilir keutamaan untuk melaksanakan penjadualan tugasan
Penjadualan tugas adalah bahagian penting dalam pengkomputeran kluster, Memandangkan beberapa tugasan mungkin memerlukan interaksi dalam talian mengagihkan tugas pada nod sekata yang mungkin untuk meminimumkan masa menunggu tugas. Pada masa ini, baris gilir keutamaan boleh digunakan untuk melaksanakan penjadualan tugas.

Dalam contoh berikut, kami mentakrifkan dua tika pangkalan data, setiap tika mengendalikan jenis tugasan yang berbeza. Barisan keutamaan adalah berdasarkan senarai dan menggunakan arahan LPUSH dan RPOP untuk melaksanakan sistem penjadualan tugas yang agak mudah.

127.0.0.1:6379> LPUSH db1 "task_1"
(integer) 1
127.0.0.1:6379> LPUSH db1 "task_2"
(integer) 2
127.0.0.1:6379> LPUSH db1 "task_3"
(integer) 3
127.0.0.1:6379> LPUSH db2 "task_4"
(integer) 1
127.0.0.1:6379> LPUSH db2 "task_5"
(integer) 2
127.0.0.1:6379> LPUSH db2 "task_6"
(integer) 3
Salin selepas log masuk

Dalam contoh ini, db1 dan db2 mewakili dua kejadian pangkalan data yang berbeza, masing-masing mengendalikan jenis tugasan yang berbeza. Sekarang kita menolak tugasan ke dalam baris gilir yang sepadan.

127.0.0.1:6379> RPOP db1
"task_1"
127.0.0.1:6379> RPOP db1
"task_2"
127.0.0.1:6379> RPOP db2
"task_4"
127.0.0.1:6379> RPOP db1
"task_3"
127.0.0.1:6379> RPOP db2
"task_5"
127.0.0.1:6379> RPOP db2
"task_6"
Salin selepas log masuk

Seterusnya, kami menggunakan arahan RPOP untuk mengalih keluar tugasan daripada baris gilir mengikut turutan. Memandangkan kedudukan setiap tugas dalam baris gilir tidak pasti, ia tidak mempunyai keutamaan yang jelas Walau bagaimanapun, kita boleh mencapai kawalan keutamaan jenis tugas yang berbeza dengan menggunakan berbilang baris gilir.

2. Gunakan baris gilir keutamaan untuk melaksanakan penapisan mesej
Penapisan mesej ialah masalah yang sering kita hadapi dalam pembangunan sebenar dalam sistem berkemampuan tinggi, mesej perlu ditapis dan dikelaskan dengan cepat, seperti , kumpulan topik, tandakan mesej penting, dsb. Pada masa ini, baris gilir keutamaan Redis boleh digunakan untuk melaksanakan penapisan mesej.

Dalam contoh berikut, kami mencipta dua baris gilir keutamaan untuk menapis mesej penting dan tidak penting masing-masing. Elemen setiap baris gilir ialah kandungan mesej dan cap waktu Isih mengikut cap masa boleh mengisih dan menapis mesej dengan cepat mengikut masa.

127.0.0.1:6379> ZADD important_messages 1628347641 "Important message 1"
(integer) 1
127.0.0.1:6379> ZADD important_messages 1628357641 "Important message 2"
(integer) 1
127.0.0.1:6379> ZADD important_messages 1628367641 "Important message 3"
(integer) 1
127.0.0.1:6379> ZADD important_messages 1628368641 "Important message 4"
(integer) 1
127.0.0.1:6379> ZADD important_messages 1628369641 "Important message 5"
(integer) 1
127.0.0.1:6379> ZADD normal_messages 1628367645 "Normal message 1"
(integer) 1
127.0.0.1:6379> ZADD normal_messages 1628368645 "Normal message 2"
(integer) 1
127.0.0.1:6379> ZADD normal_messages 1628369645 "Normal message 3"
(integer) 1
127.0.0.1:6379> ZADD normal_messages 1628370645 "Normal message 4"
(integer) 1
Salin selepas log masuk

Dalam contoh ini, important_messages dan normal_messages ialah dua baris gilir keutamaan yang kami buat, yang digunakan untuk menapis mesej penting dan tidak penting masing-masing. Elemen setiap baris gilir ialah kandungan mesej dan cap masa.

127.0.0.1:6379> ZRANGE important_messages 0 -1
1) "Important message 1"
2) "Important message 2"
3) "Important message 3"
4) "Important message 4"
5) "Important message 5"
127.0.0.1:6379> ZRANGE normal_messages 0 -1
1) "Normal message 1"
2) "Normal message 2"
3) "Normal message 3"
4) "Normal message 4"
Salin selepas log masuk

Seterusnya, kami menggunakan arahan ZRANGE untuk melihat senarai elemen dalam baris gilir keutamaan. Langkah seterusnya ialah memunculkan mesej daripada baris gilir mengikut keutamaan.

redis> ZPOPMIN important_messages
1) "Important message 1"
2) "1628347641"
redis> ZPOPMIN normal_messages
1) "Normal message 1"
2) "1628367645"
Salin selepas log masuk

Operasi di atas semuanya menggunakan arahan Redis biasa untuk mencapai penapisan dan pengisihan mesej yang pantas dan ringkas, yang boleh memenuhi keperluan sistem yang agak mudah dan juga boleh dikembangkan dan dioptimumkan lagi kepada senario yang kompleks.

3. Ringkasan

Pelaksanaan baris gilir keutamaan adalah teknologi yang sangat berguna dalam pembangunan sebenar, kami boleh menggunakannya untuk melaksanakan penjadualan tugas, penapisan mesej dan fungsi lain untuk meningkatkan prestasi dan kebolehpercayaan sistem. . Melalui pengenalan artikel ini, kami telah mempelajari tentang prinsip pelaksanaan asas dan contoh aplikasi baris gilir keutamaan Redis, dan berharap dapat membantu pembaca menguasai dan menggunakan pengetahuan ini dengan lebih baik.

Atas ialah kandungan terperinci Penjelasan terperinci pelaksanaan baris gilir keutamaan dalam Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan