Rumah  >  Artikel  >  pangkalan data  >  Kaedah Redis dan contoh aplikasi untuk melaksanakan kunci pengurusan teragih

Kaedah Redis dan contoh aplikasi untuk melaksanakan kunci pengurusan teragih

王林
王林asal
2023-05-12 08:27:05795semak imbas

Kaedah dan contoh aplikasi Redis melaksanakan kunci pengurusan teragih

Dengan perkembangan pesat aplikasi rangkaian, sistem teragih telah menjadi bahagian penting dalam aplikasi moden. Walau bagaimanapun, dalam sistem teragih, disebabkan oleh operasi yang melibatkan berbilang nod, masalah persaingan dan kebuntuan cenderung berlaku apabila sumber dikongsi antara proses. Untuk menyelesaikan masalah ini, kunci pengurusan yang diedarkan telah wujud.

Kunci teragih merujuk kepada mekanisme untuk mengawal akses kepada sumber yang dikongsi dalam sistem yang diedarkan Ia boleh memastikan bahawa hanya satu proses berbilang proses boleh beroperasi pada sumber yang dikongsi pada masa yang sama. Redis ialah sistem storan nilai kunci yang pantas dan berskala yang boleh digunakan untuk melaksanakan kunci pengurusan teragih dalam sistem teragih. Artikel ini akan memperkenalkan kaedah dan contoh aplikasi pelaksanaan kunci pengurusan teragih Redis.

1. Prinsip asas kunci teragih yang dilaksanakan oleh Redis

Pelaksanaan kunci teragih Redis bergantung terutamanya pada dua operasi atom yang disediakannya: arahan SETNX dan GETSET. Antaranya, arahan SETNX boleh merealisasikan tetapan atom kunci, iaitu, ia hanya boleh ditetapkan dengan jayanya apabila kunci tidak wujud manakala arahan GETSET memperoleh nilai lama semasa menetapkan nilai baru operasi, akses serentak boleh dielakkan.

Berdasarkan dua operasi atom ini, kunci teragih boleh dilaksanakan melalui langkah asas berikut.

  1. Cuba dapatkan kunci. Pelanggan menggunakan arahan SETNX untuk cuba menambah pengecam unik (seperti ID klien atau UUID) sebagai nama kunci dan sebarang nilai sebagai nilai kunci kepada pangkalan data Redis. Jika operasi berjaya, ia bermakna pelanggan telah berjaya mendapatkan kunci.
  2. Jika pemerolehan kunci gagal, gelung akan mencuba semula. Oleh kerana persaingan mungkin berlaku apabila berbilang pelanggan cuba memperoleh kunci pada masa yang sama, pelanggan perlu sentiasa mencuba mendapatkan kunci dan menetapkan masa menunggu yang sesuai sebelum memperoleh kunci.
  3. Pelanggan melepaskan kunci selepas menyelesaikan tugas. Apabila pelanggan menyelesaikan operasi, ia perlu menggunakan arahan GETSET untuk menetapkan nilai kunci kepada nilai sentinel tertentu (seperti null) untuk memastikan bahawa hanya pelanggan yang memegang kunci boleh melepaskan kunci. Pelanggan kemudian memadam kunci, melepaskan kunci.

2. Contoh aplikasi kunci yang diedarkan Redis

Yang berikut menggunakan baris gilir tugas yang diedarkan sebagai contoh untuk memperkenalkan cara menggunakan Redis untuk melaksanakan kunci yang diedarkan.

Andaikan terdapat berbilang pelanggan menambah tugasan pada baris gilir tugasan pada masa yang sama, dan mereka berharap setiap tugasan akan dilaksanakan sekali sahaja. Untuk mencapai tujuan ini, kunci yang diedarkan Redis boleh digunakan untuk mengawal pelaksanaan tugas. Langkah pelaksanaan khusus adalah seperti berikut:

  1. Klien A cuba mendapatkan kunci. Klien A menggunakan arahan SETNX untuk menambah pengecam unik tugas sebagai nama kunci (seperti ID tugas) dan sebarang nilai sebagai nilai kunci kepada pangkalan data Redis. Jika operasi berjaya, ini bermakna pelanggan A telah berjaya memperoleh kunci jika tidak, pelanggan A akan menunggu untuk tempoh masa tertentu dan kemudian cuba mendapatkan kunci itu semula.
  2. Klien A mendapat tugas daripada baris gilir tugas. Selepas pelanggan A memperoleh kunci, ia boleh mendapatkan sebarang tugasan yang belum diproses daripada baris gilir tugas dan menandakan tugas itu sebagai "melaksanakan".
  3. Klien B cuba mendapatkan kunci. Pada masa ini, pelanggan B juga cuba mendapatkan kunci. Memandangkan pelanggan A telah memperoleh kunci, pelanggan B perlu menunggu untuk tempoh masa tertentu sebelum cuba mendapatkan kunci itu semula sebelum memproses tugasan.
  4. Klien A menyelesaikan tugas dan melepaskan kunci. Selepas klien A selesai melaksanakan tugas, gunakan arahan GETSET untuk menetapkan status tugas kepada "Selesai" dan tetapkan nilai kunci kunci kepada null. Pada ketika ini, pelanggan A berjaya melepaskan kunci.
  5. Klien B memperoleh kunci dan meneruskan tugas. Selepas klien B memperoleh kunci, ia boleh mendapatkan tugasan yang tidak dilaksanakan seterusnya daripada baris gilir tugas dan menandakannya sebagai "melaksanakan", dan kemudian ulangi langkah di atas.

Melalui langkah di atas, pelaksanaan tugasan secara berurutan dalam baris gilir tugas yang diedarkan boleh dicapai dan memastikan setiap tugasan dilaksanakan sekali sahaja.

3. Ringkasan

Artikel ini memperkenalkan secara ringkas prinsip asas dan contoh aplikasi kunci teragih yang dilaksanakan oleh Redis. Perlu diingat bahawa walaupun pelaksanaan kunci teragih dapat mengelakkan konflik konkurensi dengan berkesan, ia juga akan meningkatkan overhed sistem, terutamanya dalam senario konkurensi tinggi. Oleh itu, sumber sistem dan isu prestasi perlu dipertimbangkan dengan teliti apabila menggunakan kunci yang diedarkan Redis untuk memastikan kestabilan dan kebolehpercayaan sistem.

Atas ialah kandungan terperinci Kaedah Redis dan contoh aplikasi untuk melaksanakan kunci pengurusan teragih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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