Rumah  >  Artikel  >  pangkalan data  >  Analisis prinsip penetapan Redis survival dan masa tamat tempoh

Analisis prinsip penetapan Redis survival dan masa tamat tempoh

WBOY
WBOYke hadapan
2022-08-30 13:51:182373semak imbas

Pembelajaran yang disyorkan: Tutorial video Redis

Sebelum memahami prinsip, mari kita lihat cara menggunakannya

Melalui arahan EXPIRE atau arahan PEXPIRE, pelanggan boleh menetapkan masa kemandirian untuk kunci tertentu dalam pangkalan data dengan ketepatan saat atau milisaat Selepas bilangan saat atau milisaat yang ditentukan, pelayan akan memadamkan kekunci secara automatik dengan masa kelangsungan hidup daripada 0.

Arahan SETEX boleh menetapkan masa tamat tempoh untuk kunci sambil menetapkan kunci rentetan (hanya boleh digunakan untuk kekunci rentetan)

dengan arahan EXPIRE dan Perintah PEXPIRE adalah serupa masa tamat tempoh kunci datang , pelayan akan memadamkan kunci secara automatik daripada pangkalan data

Arahan TTL dan arahan PTTL menerima kunci dengan masa hidup atau masa tamat , dan mengembalikan baki masa kemandirian kunci , iaitu mengembalikan tempoh masa yang diperlukan sebelum kunci dipadamkan secara automatik oleh pelayan

Redis telah. empat arahan berbeza yang boleh digunakan untuk menetapkan masa kemandirian kunci (Berapa lama kunci boleh wujud) atau masa tamat tempoh (bila kunci itu akan dipadamkan):

TAMAT TEMPOH<kunci>< Perintah ttl> digunakan untuk menetapkan masa kemandirian kunci kepada ttl saat . Perintah
  • PEXPIRE<key><ttl> digunakan untuk menetapkan jangka hayat kunci kepada ttl milisaat. Perintah
  • EXPIREAT<key><timestamp> digunakan untuk menetapkan masa tamat tempoh kunci kepada cap masa dalam saat yang ditentukan oleh cap waktu. Perintah
  • PEXPIREAT<key><timestamp> digunakan untuk menetapkan masa tamat tempoh kunci kepada cap masa dalam milisaat yang ditentukan oleh cap waktu.
  • Prinsip

Walaupun terdapat banyak unit yang berbeza dan bentuk perintah tetapan yang berbeza, sebenarnya, tiga arahan EXPIRE, PEXPIRE dan EXPIREAT semuanya dilaksanakan menggunakan arahan PEXPIREAT:

Tidak kira yang mana antara empat arahan di atas dilaksanakan oleh klien, selepas penukaran, kesan pelaksanaan akhir akan sama seperti melaksanakan arahan PEXPIREAT.

Kamus tamat tempoh struktur redisDb menjimatkan masa tamat tempoh semua kunci dalam pangkalan data Kami memanggil kamus ini sebagai kamus tamat tempoh

Kunci bagi kamus tamat tempoh ialah penunjuk , penunjuk ini menunjuk kepada objek utama dalam ruang kekunci (iaitu, kunci pangkalan data).

Nilai kamus tamat tempoh ialah integer jenis panjang panjang ini menyimpan masa tamat tempoh kunci pangkalan data yang ditunjuk oleh kekunci - cap masa UNIX dengan ketepatan milisaat.

Rajah berikut menunjukkan contoh pangkalan data dengan kamus tamat tempoh Dalam contoh ini, ruang kekunci menyimpan semua pasangan nilai kunci dalam pangkalan data, manakala kamus tamat tempoh menyimpan Masa tamat tempoh kunci pangkalan data.

Untuk kemudahan paparan, objek kunci abjad dan objek kunci buku diulang dua kali dalam ruang kekunci dan kamus tamat tempoh dalam rajah. Dalam amalan, kekunci ruang kekunci dan kekunci kamus tamat tempoh menghala ke objek utama yang sama, jadi tidak akan ada sebarang objek pendua dan tiada ruang akan terbuang.

Kamus tamat tempoh dalam gambar menyimpan dua pasangan nilai kunci:

Kunci pasangan nilai kunci pertama ialah abjad Objek utama mempunyai nilai 1385877600000, yang bermaksud bahawa masa tamat abjad kunci pangkalan data ialah 1385877600000 (0:00 pada 1 Disember 2013).

Kunci pasangan nilai kunci kedua ialah objek kunci buku dan nilainya ialah 1388556000000, yang bermaksud bahawa masa tamat tempoh buku kunci pangkalan data ialah 1388556000000 (0:00 pada 1 Januari 2014) . Apabila klien melaksanakan perintah PEXPIREAT (atau tiga perintah lain yang ditukar kepada perintah PEXPIREAT) untuk menetapkan masa tamat tempoh untuk kunci pangkalan data, pelayan mengaitkan kunci pangkalan data yang diberikan dan masa tamat tempoh dalam kamus tamat tempoh pangkalan data.

Selepas pelayan melaksanakan arahan berikut

Kamus tamat tempoh akan menambah pasangan nilai kunci, dengan kuncinya ialah objek kunci mesej dan nilainya ialah 1391234400000 (0:00 pada 1 Februari 2014), seperti yang ditunjukkan dalam angka

Berikut ialah takrifan pseudokod bagi arahan PEXPIREAT

Arahan PERSIST boleh mengalih keluar masa tamat tempoh daripada kunci

Arahan PERSIST ialah operasi terbalik bagi arahan PEXPIREAT: arahan PERSIST mencari kunci yang diberikan dalam kamus tamat tempoh dan memisahkan kunci dan nilai (tamat tempoh masa) dalam kamus tamat tempoh.

Penentuan kunci tamat tempoh

Melalui kamus tamat tempoh, program boleh menggunakan langkah berikut untuk menyemak sama ada kunci yang diberikan telah tamat tempoh:

1) Semak sama ada kunci yang diberikan wujud dalam kamus tamat tempoh : Jika wujud, dapatkan masa tamat tempoh kunci.

2) Semak sama ada cap masa UNIX semasa lebih besar daripada masa tamat tempoh kunci: jika ya, maka kunci telah tamat tempoh, jika tidak, kunci itu belum tamat tempoh. Proses ini boleh diterangkan dengan pseudokod:

Untuk abjad utama dengan masa tamat 1385877600000 (0:00 pada 1 Disember 2013):

Jika masa semasa ialah 1383282000000 (0:00 pada 1 November 2013), maka panggilan is_expired(alphabet) akan mengembalikan False kerana masa semasa adalah kurang daripada masa tamat tempoh kekunci abjad.

Sebaliknya, jika masa semasa ialah 1385964000000 (00:00 pada 2 Disember 2013), maka panggilan is_expired(alphabet) akan kembali True kerana masa semasa lebih besar daripada masa tamat abjad kunci.

Pembelajaran yang disyorkan: Tutorial video Redis

Atas ialah kandungan terperinci Analisis prinsip penetapan Redis survival dan masa tamat tempoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam